2 Architecture
Corentin JOGUET edited this page 2026-09-28 13:32:18 +02:00

Architecture

PHP 8.3 sans framework ni gestionnaire de dependances, MariaDB 11.4, cinq conteneurs Docker. Le front de la borne est en HTML, CSS et JavaScript sans dependance externe.

Le tour d'horizon en un fichier

docs/PROJECT_CONTEXT.md — le contexte complet : perimetre, ce qui est volontairement hors sujet (section 7), et la conception prealable de la menace (section 19). Commence par la si tu ne dois lire qu'un seul fichier.

Les cinq conteneurs

docker-compose.yml — la pile complete en un fichier : base de donnees, service de migration a execution unique, PHP-FPM, serveur web, taches planifiees. Une commande docker compose up amene une installation utilisable, schema et donnees de demonstration compris.

docs/architecture/deployment.md — comment la meme pile tourne en production derriere un proxy inverse, et pourquoi le deploiement passe par un canal qui ne peut lancer qu'une commande.

Le code

Ou Quoi
src/app/Core routeur, requete, reponse, acces base, chargement des classes
src/app/Controllers 31 controleurs, dont 10 pour l'API JSON sous Admin/Api (plus 2 classes abstraites et 1 trait partage)
src/app/Auth sessions, hachage argon2id, limitation des tentatives, code personnel
src/app/Views 41 fichiers de vues rendues cote serveur : 36 ecrans du back-office, 3 d'authentification, 2 gabarits de page
src/public/borne le front de la borne, 21 modules JavaScript
src/app/Core/routes.php les 158 routes (77 GET, 67 POST, 9 PUT, 5 DELETE), chargees par le point d'entree unique src/public/admin/index.php

Le chemin d'une commande

Le panier vit cote client. Le serveur n'est sollicite qu'a la validation, en deux appels : POST /api/orders cree la commande en attente de paiement et recalcule les prix depuis la base (le prix envoye par le client ne sert pas), puis POST /api/orders/{numero}/pay encaisse et decremente le stock des ingredients dans la meme transaction.

Le detail pas a pas, avec un diagramme de sequence : docs/architecture/flux-borne-selection-vers-commande.md

La carte des routes, en direct

La page Sante du back-office (/admin/health, reservee a l'administrateur) affiche la carte des 158 routes, rangee par action (80 actions : la page affichee, l'envoi du formulaire, la meme action dans l'API, et la borne), avec pour chacune la protection qu'elle exige (session, permission, jeton anti-falsification, code personnel), et lance des sondes en lecture sur l'API. Son trajet d'un appel affiche des reponses reelles : envoyees pour une lecture, capturees sur une pile jetable pour une ecriture. La carte est construite depuis le routeur lui-meme : un test echoue si une route est ajoutee sans sa ligne de protection. Voir la fiche de decision 0019.

Voir aussi

Modele de donnees · Decisions · DevOps