# Architecture technique — Projet Batch-cooking
> Documentation de l'architecture serveur/client de l'application.
---
## Vue d'ensemble
L'application repose sur une architecture **client-serveur** classique :
- Un **serveur** exposant une **API** (échanges standards) et un canal **websocket** (communication temps réel)
- Plusieurs **clients** (Client 1, Client 2, Client 3...) connectés simultanément au serveur
- Une base de données **PostgreSQL**
```mermaid
flowchart TB
subgraph SERVER["Server"]
WS["Web socket"]
API["API"]
CALC["Calcul batch-cooking
(TODO)"]
IMPORT["Import d'une recette"]
IMP1["Import depuis source"]
IMP2["Traduction en étapes"]
IMP3["Sauvegarde"]
DB[("Database
PostgreSQL")]
IMPORT --> IMP1 --> IMP2 --> IMP3 --> DB
CALC --> WS
end
C1["Client 1"]
C2["Client 2"]
C3["Client 3"]
API <--> C1
API <--> C2
API <--> C3
WS --> C1
WS --> C2
WS --> C3
style SERVER fill:none,stroke:#888,stroke-width:1px
```
---
## Composants
### API
Point d'entrée principal pour les échanges entre les clients et le serveur (requêtes classiques).
### Web socket
Canal de communication temps réel entre le serveur et les clients connectés.
### Module « Calcul batch-cooking »
Logique de calcul du batch-cooking (optimisation du planning/des recettes selon le planning). **Statut : TODO — reste à développer.**
### Module « Import d'une recette »
Pipeline d'ajout d'une recette, en trois étapes :
1. **Import depuis source** — récupération de la recette (via `sources`)
2. **Traduction en étapes** — découpage en `step` / `tech_step`
3. **Sauvegarde** — persistance en base de données
### Database (PostgreSQL)
Stockage de l'ensemble des données de l'application (voir le modèle de données pour le détail des tables).
---
## Notes
- Le module de calcul batch-cooking est le principal chantier restant côté serveur (TODO).
- Le websocket est utilisé pour la communication temps réel, en complément de l'API.
---
## Documents liés
Documentation d'implémentation (ajoutée au fil des features, complète ce document
conceptuel sans le remplacer) :
- [error-handling.md](./error-handling.md) — contrat d'erreurs partagé entre l'API et le client
- [frontend-architecture.md](./frontend-architecture.md) — organisation d'`apps/web`