mirror of
https://github.com/siop-spelev/siop2.git
synced 2026-08-08 20:51:53 +00:00
32 lines
2.2 KiB
Markdown
32 lines
2.2 KiB
Markdown
# ADR-001 — Stack technique
|
|
|
|
- **Statut** : acceptée (R0, 15 juillet 2026)
|
|
- **Contexte** : la V2 repart de zéro (code) mais pas de nulle part : la v1 a éprouvé une
|
|
stack pendant 8 sprints (~400 tests). Atlas CMMS, notre référence fonctionnelle, est en
|
|
Java Spring Boot + React MUI — cloner sa stack n'a aucun intérêt pédagogique ni pratique
|
|
pour une équipe TypeScript.
|
|
|
|
## Décision
|
|
|
|
| Couche | Choix | Justification |
|
|
| --- | --- | --- |
|
|
| Monorepo | **pnpm workspaces + Turborepo** | Un dépôt, plusieurs apps, caches de tâches ; éprouvé v1 |
|
|
| API | **NestJS (Node 24) + Prisma + PostgreSQL 18** | Architecture modulaire enseignable ; Prisma = modèle lisible par les étudiants |
|
|
| Extensions BDD | **pgvector** (RAG, R5) + **PostGIS** (carte, R1) | Un seul moteur de données pour tout |
|
|
| Cache/files | **Redis** (BullMQ pour les jobs, R2) | Génération mensuelle du préventif |
|
|
| Fichiers | **MinIO** derrière l'interface `FileStorage` | S3-compatible auto-hébergé ; l'interface interdit tout couplage (règle lint) |
|
|
| Contrat | **Zod → OpenAPI → clients typés** (« règle d'or ») | Le front ne peut pas dériver du back ; CI bloquante |
|
|
| Web | **React 19 + Vite + TanStack Query/Table + Tailwind v4** | Éprouvé v1 |
|
|
| UI kit | **shadcn/ui** thématisé par `docs/02-design/tokens.css` | Composants possédés (copiés dans le repo), accessibles (Radix), thémables par tokens — le contraire du « DaisyUI brut » de la v1. Introduit en R0 (primitives) et enrichi par release |
|
|
| Mobile | **Expo (Expo Go)** — R4 | Démo par QR sans build natif ; leçons v1 consignées |
|
|
| IA | **FastAPI (Python 3.13, uv)** — R5 | Écosystème IA Python ; n'écrit jamais en base métier |
|
|
| Déploiement | **Docker + Dokploy** (PaaS auto-hébergé) | Choix du référent ; portable (tout est compose) |
|
|
|
|
## Conséquences
|
|
|
|
- Un seul langage principal (TypeScript) du mobile à l'API — onboarding étudiant simplifié.
|
|
- La v1 sert de **référence de lecture** (décisions validées : machine à états OT, matrice
|
|
de permissions en base, stock dérivé des mouvements, synchro à verrou optimiste) ; tout
|
|
code V2 est réécrit et re-testé.
|
|
- Versions épinglées ; toute montée de version = tâche dédiée (risque n°5 du registre).
|