- Actualizare NodeJS (minim versiunea 18)
- Clonare repo
- Rulare comandă
pnpm install
în terminal (din root-ul proiectului) - Setare variabile în
.env.local
(vezi mai multe aici)
a. Secretul pentru autentificare:NEXTAUTH_SECRET
- Exemplu:
NEXTAUTH_SECRET=abc123def
- Exemplu:
- După rularea comenzii
pnpm dev
, ar trebui să pornează aplicația pehttp://localhost:3000/
și Prisma Studio pehttp://localhost:5555/
- Dacă apar erori, ping me
Bază: JavaScript + Typescript
Bibliotecă: React
Framework: Next.js
Kit UI: Bootstrap
Bază de date: PlanetScale (MySQL)
Autentificare: NextAuth.js (Folosind JWT)
Testing: Inițial foloseam playwright + vitest dar am întâmpinat niște probleme și le-am scos momentan -- eventual le vom readăuga pe parcurs
Tehnologii complementare:
Dev tools:
Hosting provider: Nu avem încă dar cred că vom folosi Vercel sau Render
pnpm lint
-- Căutare probleme în codebase (regulile se pot ajusta din~/.eslintrc
sau punctual folosind comentarii)pnpm dev
-- Rulează aplicația în development mode astfel:- Se rulează script-ul
~/scripts/predev.mjs
pentru configurări și verificări necesare la începutul rulării - Se rulează migrările de db și se adaugă dummy data
- În paralel:
- Se pornește aplicația
- Se pornește prisma studio (interfață vizuală pentru interacționare cu baza de date)
- Se rulează script-ul
pnpm build
-- Creează un build de producțiepnpm start
-- Rulează aplicația în production mode. Este necesar să existe un build de producție făcut.pnpm prod
-- Ruleazăpnpm build
șipnpm start
În aceste fișiere se află variabile de configurație. Există un fișier de bază .env
însă se mai pot adăuga și altele care depind de modul de rulare (de exemplu .env.development
, .env.production
, .env.test
).
Pentru variabile cu valori care trebuie să fie private sau care pur și simplu sunt specifice doar mediului de lucru local, se pot adăuga: .env.local
, .env.development.local
, .env.production.local
, etc. Acestea sunt incluse în .gitignore
.
Ordinea suprascrierii este următoarea (voi folosi ca exemplu development
însă această logică se aplică în toate cazurile):
.env
.env.development
.env.local
.env.development.local
Asta înseamnă că ce este declarat în .env.development.local
va suprascrie orice altceva.