Architecture et exploitation
| Couche | Choix | État |
|---|---|---|
| Backend, API, site, back-office | Laravel 13 (PHP 8.3), monolithe modulaire | en place |
| Base de données | PostgreSQL 16 | en place |
| Interface back-office | Livewire 4 + Tailwind 4, servis par Vite | en place |
| API | REST + OpenAPI 3.1, jetons Sanctum par appareil, référence interactive Scalar | en place |
| Cache, files d’attente, compteurs | Redis + Horizon | configuré ; en local, repli sur la base |
| Stockage des médias | disque privé local ou compatible S3 (R2, S3, MinIO), liens signés | choix du fournisseur à arbitrer (ADR-0003) |
| Application mobile | React Native / Expo | dépôt séparé ; raccordement au lot L5 |
| Hébergement | VPS managé, PaaS ou hébergeur marocain | à arbitrer (ADR-0009) |
Un monolithe modulaire
Section intitulée « Un monolithe modulaire »API, site et back-office vivent dans une seule application déployable. Les frontières internes correspondent aux composants du dossier d’architecture : catalogue (App\Catalogue), comptes (App\Auth), médias (App\Media), et les contrôleurs par surface (Admin, Api\V1, site). Paiement et notifications viendront comme modules exécutés en tâches de fond, pas comme services séparés.
Environnements
Section intitulée « Environnements »Aucun secret dans le code : tout passe par les variables d’environnement, dont .env.example est la liste commentée. Les migrations sont la seule façon de faire évoluer le schéma.
| Développement | Recette / production | |
|---|---|---|
| Base | PostgreSQL local | PostgreSQL du serveur |
| Médias | MEDIA_DISK=media_local |
MEDIA_DISK=media_s3 et MEDIA_S3_* |
| Codes de connexion | OTP_EMAIL_CHANNEL=log (le code est dans le journal) |
OTP_EMAIL_CHANNEL=mail et SMTP ; téléphone après ADR-0006 |
| Cache, files, limiteurs | base de données | Redis |
| Jetons d’appareil | sans expiration | SANCTUM_TOKEN_EXPIRATION en minutes, à fixer au lot L8 |
| Langues | APP_LOCALE=fr, APP_SITE_LOCALE=ar |
idem |
Variables d’environnement propres au projet
Section intitulée « Variables d’environnement propres au projet »| Variable | Rôle |
|---|---|
APP_SITE_LOCALE |
Langue par défaut du site public. |
MEDIA_DISK, MEDIA_SIGNER |
Disque des médias et mode de signature (auto, app). |
MEDIA_S3_KEY, MEDIA_S3_SECRET, MEDIA_S3_REGION, MEDIA_S3_BUCKET, MEDIA_S3_ENDPOINT, MEDIA_S3_PATH_STYLE |
Stockage compatible S3. |
OTP_EMAIL_CHANNEL, OTP_PHONE_CHANNEL, OTP_DEFAULT_COUNTRY_CODE |
Canaux du code de connexion et indicatif par défaut. |
SANCTUM_TOKEN_EXPIRATION |
Durée de vie des jetons d’appareil, en minutes ; vide = sans expiration. |
ADMIN_EMAIL, ADMIN_PASSWORD |
Compte administrateur créé par le seeder — poste de développement seulement. |
Exploitation attendue dès le pilote
Section intitulée « Exploitation attendue dès le pilote »Environnements séparés, migrations versionnées, sauvegardes automatiques avec restauration testée, suivi d’erreurs et sonde de disponibilité, intégration continue à chaque push. La chaîne de déploiement se fige avec l’arbitrage de l’hébergement.