MVP - features recurente

Intentionez sa fac o solutie care sa aiba exemple de implementari ale unor features recurente in MVPs. Chestii de genul: CRUD, file uploads, sorting etc…

Majoritatea frameworkurilor au pluginuri si extensii de genul asta, dar o implementare end to end necesita integrari si ia timp de cele mai multe ori.

As avea nevoie de ajutor pentru indentificarea acestor features sau cerinte care tot apar cu fiecare proiect. Ma intereseaza, in principal, cele cu a caror implementare ati avut probleme de-a lungul timpului.

2 Likes

Implementari pe backend sau pe frontend ? (tu ai precizat backend dar dupa scrii ca end-to-end-ul ia mult timp)

Ca sa iti dau totusi de gandit iti propun urmatoarea problema :
Exemplu de tabel cu scroll virtual care sa poata sorta utilizatorii din toata baza de date (sunt 20 de milioane de utilizatori) si sa aiba paginare (de exemplu sa sari la litera Z sau la cei care s-au nascut in Aprilie).
Aditional toate datele utilizatorului care sunt date personale (nume, nume de utilizator, email, salariu, zi de nastere, CNP, telefon, rezultatele la teste/performance review, log-uri) trebuie criptate in baza de date si pot fi decriptate doar de utilizatori cu permisiune pentru a le vedea local.

Asta e o problema la care chiar as vrea sa vad o implementare faina A-Z. Nici un framework nu prea iti da exemplul acesta, dar cu GDPR-ul toata lumea e innebunita cu securitatea si criptarea datelor si dupa ceva timp te trezesti ca ai nevoie de un feature care sa iti poata sorta, cauta datele din baza de date cand tu ai baza de date criptata.

1 Like

All ends :slight_smile: Client side, API (server side), database.

Ca sa fiu mai explicit in ceea ce vreau sa fac e sa vin cu solutii complete la probleme comune - un MVP framework.
Spuneam ca exista deja pluginuri si extensii in frameworkurile populare pentru toate aceste probleme comune, insa o implementare end to end nu gasesti mereu (fie solutiile sunt doar la nivel server side, fie doar client side).

Cateva din toolurile folosite vor fi node.js, MongoDB, express.js, GraphQL, react.js + multe altele.

Ca sa arat si ceva WIP, ar fi asta - Dropbox - Screenshot 2019-04-20 14.16.38.png - Simplify your life.

Referitor la tabelul de care ziceai, cu siguranta va fi ceva asemanator, mai putin partea de criptare la care nu ma gandisem pana acum (e asta o cerinta comuna legata de GDPR?).

Da, toate datele personale care sunt stocate trebuie criptate si decriptate (local) doar daca ai permisiuni (sunt mai multe nivele de permisiuni), respectiv accesul la ele trebuie logat de fiecare data (motivul, persoana care le-a accesat si ce date s-au accesat).

Inca o problema legata de GDPR e stergerea tuturor log-urilor care contin date personale (inclusiv date personale logate gresit, gen utilizatorul introduce parola in campul de email, tu la stergere trebuie sa verifici daca ai cumva date personale in log-uri din greseala si chiar si asa sa le stergi.

1 Like

As prefera pt GDPR sa facem un alt topic. De stergerea logurilor si datelor care apartin userului la cererea sa am auzit, de encryption nu. Sunt sigur ca treaba cu encryption e doar o exagerare (daca exista un articol pertinent pe tema asta, posteaza un link, te rog.

1 Like

Nici eu nu cred ca este stipulat clar in regulament ca trebuie ca datele din baza de date sa fie criptate. Cel mai probabil s-a ajuns la acest lucru dintr-un considerent foarte simplu si anume ca daca datele sunt criptate automat sunt in siguranta.

1 Like

Nu este obligatoriu sa criptezi datele personale.

https://www.i-scoop.eu/gdpr-encryption/

1 Like

Dap. Ar fi fost absurd si extrem de limitativ, mai ales pe partea de data fetching (filtrare, sortare etc). Probabil @isti37 a inteles gresit ceva.

Eu mi-am făcut fără intenție partea de routing în NodeJS + Express.
Să îi spunem middleware.
Dar cred că se mai poate simplifica.

Am un fișier în care declar rutele + metodele, iar în altul funcțiile apelate de rute + locația fișierelor.

Mi-ar trebui o comandă CLI care să genereze ambele:

  • URL pentru metoda API
  • fișier care să includă metodele dorite

Ar suna cam așa comanda:

mycli g “api/photo” “…/photos” -CRUD

Unde:

  • mycli = CLI-ul
  • g = generate
  • “api/photo” = API path
  • “…/photos” = locația fișierului generat
  • CRUD = metodele care să fie incluse în fișierul generat
1 Like

Am vazut un articol recent care s-ar putea sa te intereseze - https://dev.to/santypk4/bulletproof-node-js-project-architecture-4epf

Am sa vin si eu cu un exemplu care sa replice repo-ul din articol - https://github.com/santiq/bulletproof-nodejs, doar ca exemplul meu va fi bazat pe https://github.com/oors/oors

2 Likes