Architecture de référence validée · En production sur jasir.fr
Conception et architecture du portail JASS (Next.js, PostgreSQL & Docker)
Site métier auto-hébergeable avec moteur de devis, réservation transactionnelle et administration interne
Contexte
La plupart des sites de prestataires locaux empilent des extensions lourdes ou redirigent leurs visiteurs vers des plateformes externes pour prendre rendez-vous, au détriment de la confidentialité des données, de la rapidité et de la cohérence de marque.
Besoin
Offrir aux clients particuliers et professionnels une expérience fluide, accessible (WCAG 2.2 AA) et rapide entièrement hébergée sur `jasir.fr`, tout en permettant au fondateur de gérer ses demandes, ses indisponibilités et son contenu en toute autonomie.
Architecture
Application monolithique modulaire Next.js compilée en mode standalone dans un conteneur Docker non-root, adossée à une base PostgreSQL transactionnelle. Un reverse proxy Caddy assure la terminaison TLS. Les pièces jointes de devis sont validées côté serveur (MIME, taille, renommage UUID) et stockées hors du dossier public.
Briques mises en œuvre.
| Technologie | Rôle | Statut |
|---|---|---|
| Next.js App Router & TypeScript | Rendu serveur (SSR/SSG), routes API typées et interface accessible | Déployable sur périmètre client |
| PostgreSQL & Drizzle ORM | Stockage transactionnel des devis, rendez-vous, créneaux et contenus | Déployable sur périmètre client |
| Docker Compose & Caddy | Conteneurisation reproductible, healthchecks et terminaison HTTPS | Déployable sur périmètre client |
| Zod & Sécurité applicative | Validation stricte des entrées, rate-limiting, jetons HMAC et sessions signées | Déployable sur périmètre client |
Décisions techniques
- Choix d’un monolithe modulaire Next.js + PostgreSQL plutôt qu’un découpage complexe : déploiement simple en une commande (`docker compose up -d`), sauvegardes unifiées et latence minimale.
- Moteur de créneaux calculé côté serveur en fuseau `Europe/Paris` avec temps de battement configurable entre deux interventions et protection transactionnelle contre les réservations simultanées.
- Jetons cryptographiques HMAC à durée de validité permettant au client de consulter ou d’annuler son rendez-vous sans avoir à créer de compte mot de passe.
Précautions de sécurité
- Validation stricte côté serveur de tous les formulaires, limitation de débit (rate-limiting) par IP et champ honeypot anti-robots.
- Administration `/admin` protégée côté serveur par cookie `HttpOnly` signé HMAC-SHA256, mot de passe haché `scrypt`, support TOTP 2FA et en-tête `X-Robots-Tag: noindex`.
- Script de sauvegarde automatisé chiffrant le dump PostgreSQL et les pièces jointes avec vérification de restauration.
Résultat constaté
Plateforme rapide, sobre et entièrement maîtrisée, servant à la fois d’outil de travail quotidien pour JASS et de démonstration concrète de mon savoir-faire en création web.
Compromis et limites connues
Pour limiter les messages perdus en spam des e-mails de confirmation (notamment vers les boîtes Gmail/Outlook des clients), l’application s’appuie sur un relais SMTP authentifié configuré avec SPF, DKIM et DMARC plutôt qu’un envoi direct depuis une IP résidentielle.
Prochaine étape
Étudier une architecture proche pour votre structure ?
Décrivez votre cas : je réponds franchement, y compris quand la réparation ne vaut pas le coup.