J1 — Le dépôt tourne
Vérifié contre le produit le .
L’objectif du jour : l’application répond sur votre machine, et vous savez quoi regarder quand elle ne répond pas.
| Durée réaliste | 2 heures, dont l’essentiel à télécharger des images et des dépendances |
| Prérequis | le dépôt cloné, et rien d’autre d’installé |
Ce qu’il faut installer, et où la version est fixée
Section intitulée « Ce qu’il faut installer, et où la version est fixée »Aucune version n’est recopiée ici : chacune vit dans un fichier du dépôt, et c’est ce fichier qui fait foi.
| Outil | Où la version est fixée | Ce qui casse sans lui |
|---|---|---|
| Bun | le champ packageManager du package.json racine — la CI épingle la même valeur dans .github/workflows/ci.yml |
tout : c’est le gestionnaire de paquets et le lanceur de scripts |
| Node | engines.node du package.json racine, et .nvmrc |
les apps (Vite, NestJS) |
| Docker | les images sont dans docker-compose.yml — PostgreSQL et Redis |
la base, la file d’attente, le solveur |
| JDK | apps/solver/app/build.gradle.kts — toolchain 21, comme les images du Dockerfile |
rien, sauf si vous construisez le solveur en local |
Le JDK est optionnel et le reste. Le solveur se construit dans Docker ; un développeur qui ne
touche pas au moteur d’optimisation n’a pas besoin de Java. Et si vous en avez besoin, la version
installée sur votre poste importe peu : la construction Gradle déclare une toolchain 21 et
télécharge le JDK qui manque. Notez au passage que le README.md racine annonce encore
« Java 17+ » : c’est la seule version du dépôt à ne pas être alignée sur ce que le solveur exige.
Dans quel ordre
Section intitulée « Dans quel ordre »bun install # jamais npm ni pnpm : le lockfile est bun.lockcp .env.example .envdocker compose up -d # postgres, redis, solverbun run devQuatre choses à savoir sur ces quatre lignes :
bun install, jamais autre chose. Le dépôt est un workspace Bun ; unnpm installfabrique un second arbre de dépendances et un lockfile concurrent..envporte deux connexions à la base, et elles ne sont pas interchangeables — voir le piège plus bas.docker compose up -ddémarre trois services : PostgreSQL (5432), Redis (6379) et le solveur (8082). Il ne démarre pas l’API ni le web, qui sont derrière le profilfullet tournent en local parbun run dev. L’en-tête du fichierdocker-compose.ymlannonce encore « PostgreSQL and Redis only » : le solveur a rejoint le profil par défaut après.- Les migrations partent toutes seules : l’API les applique au démarrage en développement,
avec la connexion propriétaire. Pour les jouer à la main :
bun run --filter @beemyschool/db db:migrate.
Une variable optionnelle, et ce qu’elle allume
Section intitulée « Une variable optionnelle, et ce qu’elle allume ».env.example déclare VITE_DOCS_URL sans valeur. Elle porte l’origine de ce site de
documentation, et c’est elle qui fait apparaître le bouton « Aide sur cet écran » dans
l’en-tête de l’application — celui qui ouvre la page de référence de l’écran courant.
Laissée vide, le bouton n’existe pas. C’est le bon défaut : un lien d’aide vers un site que
personne n’a démarré coûte un clic et de la confiance. Pour l’allumer en local, lancez la
documentation (bun run --filter docs dev, port 4322) et posez
VITE_DOCS_URL=http://localhost:4322 dans votre .env.
Comment savoir que c’est bon
Section intitulée « Comment savoir que c’est bon »| Ce que vous ouvrez | Ce que vous devez obtenir |
|---|---|
http://localhost:3000 |
l’application web |
http://localhost:3001/docs |
l’OpenAPI de l’API, en interactif |
http://localhost:3001/health |
l’état de l’API, que la page d’accueil du web interroge aussi |
curl http://localhost:8082/q/health/ready |
la sonde du solveur |
Les ports du dépôt : web 3000, API 3001, atelier de données 3100, ce site de
documentation 4322, solveur 8082 — et PostgreSQL 5432, Redis 6379. La table de référence
est sur le gabarit de recette. Si vous croisez 5173 quelque part, c’est
l’ancien défaut de Vite : rien n’écoute dessus.
Le piège du jour
Section intitulée « Le piège du jour »Ce qui doit exister à la fin de la journée
Section intitulée « Ce qui doit exister à la fin de la journée »-
bun installpasse sans avertissement de version - Le fichier
.envexiste, copié depuis.env.example -
docker compose psmontre postgres, redis et solver démarrés - L’application répond sur
http://localhost:3000 - L’OpenAPI s’affiche sur
http://localhost:3001/docs - La sonde du solveur répond sur
http://localhost:8082/q/health/ready - Vous savez dire lequel des deux
DATABASE_*sert à quoi
J2 — Les données existent : une application qui répond sur une base vide ne montre rien. Vous allez la peupler — et découvrir qu’il y a trois façons de le faire, pour trois besoins différents.