Installation
Installation
Prérequis
- Node.js LTS (v20 ou supérieur)
- Corepack activé (
corepack enable) - Docker et Docker Compose
Le gestionnaire de paquets est pnpm exclusivement. Ne pas utiliser npm ni yarn.
1. Cloner et installer les dépendances
git clone <url-du-depot>
cd PROJET-myPromo
pnpm install
2. Services Docker (base de données et stockage)
Démarrer PostgreSQL, Adminer et Garage (S3 local) :
docker compose up -d postgres adminer garage s3ui
| Service | URL locale | Port |
|---|---|---|
| PostgreSQL 17 | localhost:55432 | 55432 |
| Adminer (UI BDD) | http://localhost:8081 | 8081 |
| Garage — API S3 | http://localhost:3900 | 3900 |
| Garage — Admin API | http://localhost:3903 | 3903 |
| S3 UI | http://localhost:8090 | 8090 |
3. Configuration
Copier .env.example en .env et renseigner les valeurs. Ne jamais committer de secret.
cp app/mypromo/.env.example app/mypromo/.env
Variables essentielles (extrait) :
DATABASE_URL=postgresql://pulse:<mot-de-passe>@localhost:55432/pulse_my_promo?schema=public
BETTER_AUTH_SECRET=<min-32-caractères>
YOUSIGN_API_KEY=<votre-clé>
PAPPERS_API_TOKEN=<votre-token>
# … cf. app/mypromo/.env.example pour la liste complète
Toutes les variables sont validées au démarrage par un plugin Nitro : le serveur refuse de démarrer si la configuration est incomplète.
4. Migration de la base de données
pnpm -C app/mypromo run db:migrate:deploy
En développement, pour créer une nouvelle migration après modification du schéma Prisma :
pnpm -C app/mypromo run db:migrate
Pour régénérer le client Prisma sans migration :
pnpm -C app/mypromo run db:generate
Pour ouvrir Prisma Studio (interface visuelle BDD) :
pnpm -C app/mypromo run db:studio
5. Données de seed
La commande seed:dev peuple la base (profils dev|demo|test|preprod). Par défaut les comptes seedés utilisent le mot de passe ChangeMe123! (ou la valeur de SEED_AUTH_PASSWORD si définie). Un fixture peut aussi épingler un mot de passe par compte via le champ password (utilisé par le profil preprod) ; ce mot de passe est appliqué à la création du compte.
pnpm -C app/mypromo run seed:dev
# ou selon le profil souhaité :
pnpm -C app/mypromo run seed:demo
pnpm -C app/mypromo run seed:test
pnpm -C app/mypromo run seed:preprod
Profil preprod — jeu de démonstration 100% factice
Le profil preprod produit un jeu de données de démonstration entièrement fictif (emails @fixtures.local, SIREN/SIRET synthétiques, aucune donnée d'entreprise réelle) : comptes admin, distributeurs et industriels, organisations, profils de facturation, magasins générés (france-realistic-v1) et espaces publicitaires. Contrairement à dev/demo qui génèrent des magasins à partir de données d'établissements réelles (enseigne-distributor-v1), preprod s'appuie sur scripts/fixtures/stores.france.synthetic.json.
pnpm -C app/mypromo run seed:preprod
Ce profil est non destructif : il n'exécute jamais de TRUNCATE (option --drop réservée à seed:test) et toutes ses collections sont en upsert, il peut donc être relancé sans créer de doublons ni supprimer de données existantes.
Chaque compte preprod a un mot de passe fort et unique épinglé dans scripts/fixtures/seed-data.preprod.json (champ password), et non le ChangeMe123! par défaut :
| Compte | Rôle | Mot de passe |
|---|---|---|
admin.demo@fixtures.local | admin | Preprod!Admin-9Kf2Qx7m |
distributor.demo@fixtures.local | distributeur | Preprod!Distrib-4Rz8Tn3p |
paul.reseau@fixtures.local | distributeur | Preprod!Reseau-6Tn3Wm5q |
industrial.demo@fixtures.local | industriel | Preprod!Indus-2Wp5Lc8v |
manon.orbite@fixtures.local | industriel | Preprod!Orbite-8Lm4Bd6s |
noemie.altitude@fixtures.local | industriel | Preprod!Altitude-3Vc9Hk1r |
E2E_TEST_MODE=1 (le compte admin de démo octroie un accès complet). Le mot de passe n'est appliqué qu'à la création du compte : pour le modifier ensuite, utilisez la réinitialisation depuis l'application.6. Démarrer le serveur de développement
pnpm -C app/mypromo run dev
L'application est accessible sur http://localhost:3000.
7. Commandes qualité
pnpm run check # gate complet (racine) : lint + typecheck + format:check + tests
pnpm -C app/mypromo run check # lint + typecheck + tests (sans format:check)
pnpm -C app/mypromo run lint:fix # corrections ESLint automatiques
pnpm -C app/mypromo run test:unit # tests unitaires (Vitest)
pnpm -C app/mypromo run test:integration # tests d'intégration (Vitest)
pnpm -C app/mypromo run test:e2e # tests end-to-end (Playwright)
Avant le premier lancement des tests E2E, installer les binaires Playwright :
pnpm -C app/mypromo exec playwright install chromium