Plateforme multi-tenant de gestion de commandes : API Symfony 7, vitrine Astro, dashboard SvelteKit, machine d'état des commandes, temps réel Mercure, POS et programme de fidélité.
Ogbay est une plateforme multi-tenant de gestion des commandes et du catalogue produit, composée de trois applications indépendantes derrière un reverse proxy Nginx partagé.
Nginx
│
├── /api/* → Symfony 7.4 via FastCGI (PHP-FPM :9000)
├── /.well-known/mercure → Hub Mercure (temps réel WebSocket)
├── app.{domaine} → Dashboard SvelteKit 2
└── / → Vitrine Astro 6
Les trois applications sont orchestrées par Docker Compose avec des surcharges par environnement (dev, test, staging, prod). Un Makefile centralise toutes les opérations courantes pour éviter d’appeler docker compose directement.
L’API REST est organisée par domaine métier dans src/Controller/ : Auth, Admin, Catalogue, Orders, Delivery, POS, Loyalty, Stock, Promo, Public. Le même découpage s’applique aux couches Service/ et Repository/.
Les 29 entités Doctrine utilisent des UUID comme clés primaires. Les principales :
L’authentification repose sur LexikJWT (RSA keypair) avec refresh tokens. Les emails transactionnels (confirmation, réinitialisation de mot de passe) sont envoyés via l’API Brevo. Les PDFs (tickets, factures) sont générés en transmettant du HTML au sidecar Gotenberg.
Les changements d’état des commandes sont publiés sur le hub Mercure. Le dashboard admin et l’application livreur reçoivent les mises à jour en direct via EventSource, sans polling.
La vitrine publique est construite en Astro 6 SSR avec des îles Svelte 5 pour l’interactivité. Le routing i18n couvre le français et le néerlandais. L’UI utilise Tailwind 4 + DaisyUI 5.
Le dashboard admin est une application SvelteKit 2 en full SSR, servie sur un sous-domaine dédié. Routes imbriquées, form actions, protection JWT. Il couvre la gestion du catalogue, le suivi des commandes en temps réel, la configuration des créneaux de livraison, les rapports et l’administration des utilisateurs.
La suite de tests PHPUnit tourne dans un environnement Docker isolé (docker-compose.test.yml) avec une base de données séparée. Les migrations Doctrine s’exécutent automatiquement au démarrage du conteneur de développement. PHP-CS-Fixer et PHPStan sont intégrés au pipeline.
Projets similaires