Outil de chiffrage et d'étude pour projets de ventilation
Un produit full-stack qui digitalise l'étude technique et le chiffrage de projets de ventilation, piloté de bout en bout : coordination d'équipe, architecture API et données, fondations frontend et mise en place DevOps.
- Rôle
- Team Lead : architecture, backend, livraison
- Client
- Soler & Palau
- Stack
- NestJS, Next.js, TypeScript, PostgreSQL, Prisma ORM, TanStack Query, TanStack Form + Zod, next-intl, NextAuth, Sentry, AWS S3, Puppeteer, Docker
Problème
Soler & Palau avait besoin d'un outil digital pour réaliser les études techniques et produire les chiffrages de projets de ventilation. Au-delà des fonctionnalités, le défi d'ingénierie était de livrer dans les délais un produit full-stack maintenable, en gardant une équipe pluridisciplinaire alignée avec les parties prenantes.
Architecture
Le backend est une API REST NestJS modulaire : authentification JWT avec refresh tokens, contrôle d'accès par rôles (RBAC), couches de validation explicites, et intégrations pour les données temps réel, le stockage AWS S3, l'email transactionnel et la génération de PDF via Puppeteer. La couche de données est PostgreSQL modélisée avec Prisma, avec des relations entre entités et une stratégie de migration basée sur Prisma Migrate. Le frontend est en Next.js 15 (App Router), structuré selon l'atomic design : TanStack Query gère le state serveur, TanStack Form avec Zod valide les entrées à la frontière, next-intl fournit l'i18n et NextAuth protège les routes.
Décisions d'ingénierie
API modulaire avec couches de validation explicites
Chaque domaine vit dans son module NestJS avec validation à la frontière. Une nouvelle fonctionnalité étend un module au lieu de disperser des conditions dans le codebase, et les données invalides sont rejetées avant d'atteindre la logique métier.
Prisma Migrate comme stratégie de migration délibérée
Les évolutions de schéma sont des migrations versionnées et relisibles plutôt que du SQL ad hoc. Le modèle de données évolue avec le produit sans interventions manuelles risquées sur les environnements.
State serveur et formulaires : deux préoccupations distinctes
TanStack Query gère le cache et la synchronisation avec l'API ; TanStack Form + Zod valide les saisies là où elles entrent dans le système. Cette séparation évite l'enchevêtrement classique de logique de fetch dans les composants de formulaire.
Docker Compose dès le premier jour
Des environnements reproductibles ont rendu onboarding et cycles de release prévisibles : la même stack tourne à l’identique chez chaque développeur.
Qualité & fiabilité
Couches de validation à la frontière de l'API, RBAC sur chaque ressource protégée, et observabilité Sentry en production. Les environnements Docker reproductibles gardent développement et déploiement cohérents.
Résultat
Livré dans les délais par une équipe pluridisciplinaire, avec des priorités et des attentes gérées tout au long du projet. L'architecture modulaire et la stratégie de migration gardent le produit maintenable dans la durée.
- NestJS
- Next.js
- TypeScript
- PostgreSQL
- Prisma ORM
- TanStack Query
- TanStack Form + Zod
- next-intl
- NextAuth
- Sentry
- AWS S3
- Puppeteer
- Docker