Aller au contenu

Stack & décisions

Décisions techniques tranchées pour la Phase 1 (MVP, 1–2 marchands). Source de vérité : STACK.md.

Brique Techno
Runtime Node.js 22 LTS
Langage TypeScript strict
Framework HTTP Fastify 5
Validation Zod
Driver DB node-firebird-driver-native
Base de données Firebird 5 (distant, existant côté client)
Cache + verrous Redis 7
Jobs / queues BullMQ (présent ; l’outbox utilise aujourd’hui un poller maison, voir Workers)
Tests Vitest
Lint + format Biome
Logs pino
Brique Techno
Bootstrap loader TypeScript + esbuild → IIFE
Checkout SDK TypeScript + Lit (Web Components) → ESM
Adapters PSP client TypeScript + esbuild → ESM
Consoles & démos Next.js 15
Plugin PrestaShop PHP 8.2
Plugin Shopify React Router / Remix

OVH dédié (Ubuntu 24.04), Docker + Compose v2, Caddy (reverse proxy + TLS), Cloudflare (CDN gratuit) + R2 (stockage SDK/adapters), Uptime Kuma (uptime), Sentry (erreurs). CI : GitHub Actions + GHCR, deploy par SSH + docker compose pull/up.

Rejeté Raison
NestJS Overkill pour un MVP ; migration possible en Phase 2
Prisma / TypeORM Pas de support Firebird
Kubernetes / K3s Un seul serveur suffit
Vault / HashiCorp .env + sops en Phase 1
Svix Webhooks maison + BullMQ suffisent (< 1k/jour)
Prometheus / Grafana Logs Docker + Uptime Kuma en Phase 1
ESLint + Prettier Biome (un seul outil, plus rapide)
Jest Vitest (ESM natif)
Déclencheur Ajout
5+ marchands actifs Vault + back-office complet
50+ checkouts/min 2e serveur + load balancer
1k+ webhooks/jour Svix self-hosted
Équipe 3+ dev Envisager NestJS
Incident prod sérieux Prometheus + Grafana

Source de vérité : STACK.md.