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.