Skip to main content
Châtaigne est une plateforme qui transforme WhatsApp en solution complète de commande par language naturel pour les restaurants.
Notre architecture backend est conçue pour gérer des interactions en temps réel avec les clients via WhatsApp, tout en orchestrant de nombreuses intégrations avec des services tiers (paiement, livraison, POS, etc.).

Principes Architecturaux Fondamentaux

Domain-Driven Design

Séparation claire entre la logique métier et les détails techniques

Clean Architecture

Structure en couches concentriques pour une meilleure organisation

Event-Driven

Architecture orientée événements pour un découplage optimal

1. Domain-Driven Design (DDD)

Notre architecture suit les principes du Domain Driven Design pour maintenir une séparation claire entre la logique métier et les détails techniques. Cela nous permet de :
Isoler le domaine métier des détails d’implémentation
Faciliter l’ajout et la modification des différentes intégrations sans impacter le cœur métier
Maintenir une cohérence dans le traitement des commandes à travers différents canaux

2. Clean Architecture

L’application est structurée en plusieurs couches concentriques :
1

Domain Layer

Cœur métier, entités et règles business
2

Application Layer

Orchestration des use cases et flux métier
3

Infrastructure Layer

Implémentation technique et intégrations
4

Presentation Layer

API REST et webhooks

3. Event-Driven

Notre système est fortement orienté événements afin de découpler la logique de chaque intégration en réaction à certains évenements :

Stack Technique

Technologies Principales

Framework

NestJS (Node.js)

Base de données

PostgreSQL avec Prisma ORM

Message Queue

Redis/BullMQ

Cache

Redis

API Documentation

OpenAPI/Swagger

Intégrations Principales

Messaging

WhatsApp Business API via 360Dialog

Paiement

Stripe

POS

Hubrise

Livraison

Uber Direct, Shipday

Impression

Expedy

Principes de Design Clés

1

Modularité

• Chaque intégration est isolée dans son propre module• Les adaptateurs permettent de modifier les classes domaine en classe adaptée à chaque intégration
2

Résilience

• Gestion des erreurs standardisés• Retry patterns pour les appels externes• Queue de messages pour les opérations asynchrones lourdes en ressources/temps
3

Scalabilité

• Architecture modulaire• Interface claires pour les fonctionnalités stratégiques permettant de remplacer facilement l’intégration• Interface claire des intégrations de Messaging pour un switch simple entre Whatsapp et Instagram
4

Maintenabilité

• Tests unitaire, integration et E2E pour chaque fonctionnalités• Monitoring complet• Documentation à jour• Code standardisé