Aller au contenu

ADR-001 — Stack TypeScript unique

Date : 2026-04-18 Statut : Acceptée — implémentée Implémentation : 85c84bd (monorepo pnpm init), f591e30 (Prisma + Fastify), confirmé par l'ensemble de la codebase.

Contexte

AlpiMonitor doit démontrer en 13 jours une stack web fixée par un cahier des charges initial, avec un budget cognitif et temporel serré. Plusieurs stacks étaient envisageables :

  • Mono-stack TypeScript (Vue 3 + Fastify + Prisma)
  • Stack mixte TypeScript + Python/FastAPI pour volets IA/ML
  • Stack mixte TypeScript + Go pour perf backend

Décision

On part sur une stack TypeScript unique : Vue 3 côté front, Fastify côté back, Prisma côté ORM, Zod pour la validation partagée.

Conséquences

Positives

  • Partage de types entre front et back via packages/shared, zéro drift
  • Courbe d'apprentissage réduite : un seul runtime, un seul package manager, un seul écosystème de tests
  • Alignement strict avec le cahier des charges initial : Vue/Vite/TS/Fastify explicitement demandés, ni Python ni Go
  • Simplicité de déploiement : un seul container backend, pas d'inter-service
  • Focus front-end : la démonstration visée est d'abord front-end, le code doit l'être majoritairement

Négatives

  • Pas de démonstration de polyglossie : un lecteur qui attend plusieurs langages ne la trouvera pas ici
  • Pas de ML natif : Node est moins à l'aise pour du ML sérieux. Mitigation : détection d'anomalies statistiques simple (écart-type sur moyenne mobile) qui ne nécessite aucune lib ML

Alternatives écartées

Ajouter Python/FastAPI pour un volet IA

Écartée. La démonstration visée est front-end, pas ML. Ajouter un microservice Python aurait consommé 3-4 jours sur un sprint de 13, et dispersé le projet plutôt que de l'approfondir.

Node + Go pour le backend

Écartée. Aucun bénéfice perf à cette échelle (quelques milliers de mesures/jour). Go ne figure pas dans le cahier des charges initial.