Installation

Mise en place de l'environnement de développement local pour Pulse my Promo.

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
ServiceURL localePort
PostgreSQL 17localhost:5543255432
Adminer (UI BDD)http://localhost:80818081
Garage — API S3http://localhost:39003900
Garage — Admin APIhttp://localhost:39033903
S3 UIhttp://localhost:80908090

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
Identifiants de développement local uniquement — ne jamais les utiliser ni les reporter en environnement exposé.

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 :

CompteRôleMot de passe
admin.demo@fixtures.localadminPreprod!Admin-9Kf2Qx7m
distributor.demo@fixtures.localdistributeurPreprod!Distrib-4Rz8Tn3p
paul.reseau@fixtures.localdistributeurPreprod!Reseau-6Tn3Wm5q
industrial.demo@fixtures.localindustrielPreprod!Indus-2Wp5Lc8v
manon.orbite@fixtures.localindustrielPreprod!Orbite-8Lm4Bd6s
noemie.altitude@fixtures.localindustrielPreprod!Altitude-3Vc9Hk1r
Ces mots de passe sont versionnés dans le dépôt : ils sont forts mais publics. Pour une preprod réellement exposée, changez-les dans le fixture (ou après le seed via l'app), et ne positionnez jamais 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