Ne znam ni sam kako da točno otvorim temu, pa ću nekako generalno.
Puno toga radim u zadnje vrijeme, puno sam vremena proveo u raznim jezicima i frameworc(k)ima, i puno toga još uvijek ne znam, a možda su i ostali u sličnim situacijama. Baš zato bi mi nekad pomogao savjet ili neki topic koji ciljano govori o web developmentu i dobrim praksama and stuff.
https://foggyproductions.com
Ponosni sam vlasnik nakucane web stranice od nule. Prvotna ideja bila mi je dić sajt za portfolio da izbjegnem portale i dopisivanje iskustva tamo; umjesto toga samo im dam link s primjerom što znam i stranica je dokaz da upravo to i moram znati 🙂
Proširilo se prvo na recenzija igara, pa neke vijesti/postove i naravno sada i main thing - trophy guides.
Stranica je kompletno napravljena koristeći javascript uz express (backend servis) koji backend vrti unutar NodeJs okruženja, a fronta je express-handlebars što je ustvari template HTML framework koji express kao backend pretvara u moćan alat koji šalje partialse (dijelove HTML-a) u frontu koja ih tako onda renderira. Moć toga leži da postoje reusabilni frontend templati koji mogu koristit varijable poslane kroz backend. Za dinamički css koristim materializeCSS koji je inačica Boostrapa, na žalost razvoj obustavljen i žao mi je što nisam Boostrap krenuo jer sad će bit veselo promijeniti design nekad.
EDIT:
Sada vidim da su forkali taj inicijalni projekt i pomalo se dorađuje ovaj novi:
https://github.com/materializecss/materialize
Primjer i što sve gore navedeno na linkovima ispod.
https://www.npmjs.com/package/express
https://www.npmjs.com/package/express-handlebars
https://handlebarsjs.com/
https://materializecss.com/
Što se tiče baze, koristim MongoDB. On je više document management DB oriented, a za JavaScript je super jer u bazu spremate podatak kao JSON (JavaScript Object Notation) format. Savršeno za ono što ja radim sebi trenutno i super zabavna tehnologija.
https://www.mongodb.com/json-and-bson
Trenutno radim na user managmentu i userima opcenito - plan je da regani korisnik moze samo komentare ostavljat za sve tipkove dokumenata koje imam. Za autorizaciju koristim passport (https://www.npmjs.com/package/passport), ali cijeli model usera i stanja ovisno o regi sam osmislio sam. Imam i permissione, puno njih (admin, modovi, recenzenti, bla bla).
Napravio sam i prvi draft komentara, a za text editor koristim TinyMce (https://www.tiny.cloud/docs/release-notes/release-notes50/). Fenomenalan text editor. Problem je što nema sve u đaba ediciji, ali ima dovoljno (FFA editor u kojem pišemo ima iste stvari). Povezao sam puno toga s njim, najveći challenge mi je bio napravit Quote blokove necijeg komentara.
Nedavno sam konačno uspio napravit reusabilne frontend .js fajlove pod scopom, jer inače sve što u browseru učitate u script tagove (na .js fajlove mislim) su globalno definirane stvari, što znači da ako imate funciju X u 2 učitanja .js fajla, nebu dobro. Upravo zato, i zbog reusable helper metoda manipulacije elementima napravio sam .js load kao module, a takav fajl onda u sebi moze imati export i import statement. Ne mogu bit sretniji sto sam to uspio. NodeJs i backend to imaju kao module.export, ali to ne radi unutar browsera (mindfuck da, trebalo mi je vrijeme da skuzim razliku).
Dobar topic oko toga -> https://www.taniarascia.com/javascript-modules-import-export/
Naravno, koristim git kao repo, a aplikacija mi leži na linux virtualkama na Hetzner cloudima gdje sam s kolegom sve posložio i ubacio let's encrypt cert pa sad imam https protokol na serveru.
Security i XSS prakse
https://blog.risingstack.com/node-js-security-checklist/
Helmet je možda najbolji paket za uključiti kad dižete express u nodeJs orkuženju, jer sam ubacuje headere i preventira zlouporabu raznih pizdarija koje ne želite.
Našao sam i 2 dobra paketa koja služe za kontrolu unosa samog usera:
Frontend XSS prevention
https://www.npmjs.com/package/dompurify
Backend XSS prevention
https://www.npmjs.com/package/sanitizer
Što vi radite, radite li nešto slično? Inače radim s web automation toolovima (protractor, selenium, testcafe, cypress) u C#-u i Typescriptu (ovisno koji koristim), a planiram i sebi automatizirat testiranje na svom webu, samo da dovršim trenutne stvari jer sam sve raskopao lokalno. Volio bih da nas je više u ovim krugovima, pa da si pomognemo međusobno 🙂