Aller au contenu principal

Mise en route

Ce guide te permet d'avoir l'environnement de développement complet (API + frontend + documentation) qui tourne sur ta machine en quinze minutes.

Prérequis

OutilVersionRemarque
Node.js≥ 20.0LTS recommandé
npm≥ 10.0Gestionnaire de packages — pas de pnpm/yarn dans ce repo
PostgreSQL16+Conteneur Docker partagé recommandé (cf. infra dev)
Redis7+Pour les refresh tokens (phase D+)
Gitrécentgit mv est utilisé pour les renommages

Infrastructure dev partagée

Le repo ne lance pas son propre Postgres : la convention est qu'un seul Postgres + un seul Redis tournent sur ta machine, mutualisés entre tous tes projets locaux (cf. ADR 0055). Référence : stack.md §4 — Infrastructure.

Le provisionnement spécifique à MomBiz (rôle mombiz + base mombiz_dev) est versionné dans devstack/ et appliqué automatiquement par npm run setup (ci-dessous) via npm run db:provision. Détails : devstack/README.md.

Le privilège CREATEDB (posé par le script d'init) est nécessaire en dev pour que prisma migrate dev puisse créer une shadow database temporaire (détection des opérations destructives).

Mise en route express

Conteneur Postgres+Redis partagé déjà démarré ? Une seule commande fait tout (.env, dépendances, provisionnement DB, migrations, seed) :

git clone https://gitlab.id2real.net/comlan.azankpe/e-learning.git
cd e-learning
npm run setup

Puis lance les processus. Les sections suivantes détaillent chaque étape pour qui veut comprendre ou dépanner.

Installation

git clone https://gitlab.id2real.net/comlan.azankpe/e-learning.git
cd e-learning
npm install # installe tous les workspaces (~2-3 min)

L'installation déploie :

  • apps/api/ — backend NestJS
  • apps/frontend-public/ — zone publique (landing, auth, catalogue) React + Vite
  • apps/frontend-learner/ — espace apprenante
  • apps/frontend-teacher/ — espace formatrice
  • apps/frontend-admin/ — back-office admin
  • apps/docs/ — site Docusaurus (cette doc)
  • packages/ui/ — composants, contextes, services API, design tokens partagés (@app/ui)
  • packages/contracts/ — schémas Zod partagés

Le frontend est découpé en 4 apps par rôle partageant @app/ui, servies sous une origine unique derrière reverse-proxy (cf. ADR 0054).

Configuration

Déjà fait par npm run setup (qui génère aussi un JWT_SECRET aléatoire). Manuellement :

cp apps/api/.env.example apps/api/.env

Édite apps/api/.env :

PORT=3000
DATABASE_URL="postgresql://mombiz:mombiz-dev@127.0.0.1:5432/mombiz_dev?schema=public"
JWT_SECRET="<32+ caractères aléatoires>" # openssl rand -base64 48
JWT_ACCESS_EXPIRES_IN="15m"
JWT_REFRESH_EXPIRES_IN="7d"
PAYMENT_PROVIDER="stub"

Initialiser la base

Déjà fait par npm run setup. Manuellement, depuis la racine :

npm run db:provision # crée le rôle mombiz + la base mombiz_dev (idempotent)
npm run db:deploy # applique les migrations
npm run db:generate # régénère le client Prisma
npm run db:seed # injecte les données démo (seed modulaire)

Pour repartir d'une base propre : npm run db:reset (drop + migrations + seed ; refuse une base non-locale sauf ALLOW_RESET=1).

Comptes démo créés. Connexion par email OU nom d'utilisateur, mot de passe commun test@1234. Les usernames de dev suivent le format civilite.nom :

UsernameEmailRôle
adminadmin@demo.mombizADMIN
mme.diopfatou@demo.mombizTEACHER
mme.traoreaicha@demo.mombizTEACHER
mme.sowaminata@demo.mombizLEARNER
mme.fallbintou@demo.mombizLEARNER
mme.keitasara@demo.mombizLEARNER

Lancer

Trois processus à démarrer en parallèle (3 terminaux ou un multiplexeur) :

npm run dev:api # http://localhost:3000/api/v1 (NestJS watch)
npm run dev:frontend # http://localhost:5173 (4 apps + proxy origine unique)
npm start --workspace=@app/docs # http://localhost:3000 (cette doc)

dev:frontend démarre les 4 apps (public 5173, learner 5174, teacher 5175, admin 5176) ; l'app publique proxifie /learner, /teacher, /admin → tout passe par http://localhost:5173 (origine unique, session localStorage partagée). Pour ne lancer qu'un espace : npm run dev:learner (ou dev:teacher / dev:admin / dev:public).

:::warning Ports identiques Le backend et la doc Docusaurus écoutent par défaut tous les deux sur :3000. Pour les lancer ensemble, démarre la doc avec npm start --workspace=@app/docs -- --port 4000. :::

Vérifier que tout tourne

curl http://localhost:3000/api/v1/health # → { "status": "ok" }

Ouvre http://localhost:5173 et connecte-toi avec un compte seedé (cf. table ci-dessus) — par username (mme.diop) ou email, mot de passe test@1234.

Scripts racine utiles

npm run dev:api # API en watch mode
npm run dev:frontend # Les 4 frontends + proxy origine unique (:5173)
npm run dev:learner # Un seul espace (idem dev:teacher / dev:admin / dev:public)
npm run build:contracts # Recompile les schémas Zod (auto avant dev:api)
npm run build:api # Build production de l'API
npm run build:frontend # Build production des 4 frontends
npm run test:api # Tests Jest backend
npm run build # Build de tous les workspaces

npm run setup # Bootstrap complet (.env, install, DB, seed)
npm run db:provision # Crée rôle + base sur le Postgres partagé
npm run db:migrate # prisma migrate dev (crée/applique une migration)
npm run db:deploy # prisma migrate deploy (applique sans créer)
npm run db:generate # Régénère le client Prisma
npm run db:seed # Données démo (seed modulaire)
npm run db:reset # Drop + migrations + seed (garde-fou non-local)
npm run db:studio # Prisma Studio

Aller plus loin