# 🔧 Notes de DĂ©veloppement ## ✅ Solution: Build Frontend AVANT Docker **InspirĂ© par:** L_Onomathoppee project ### Le ProblĂšme (RĂ©solu ✅) - **Ancien problĂšme:** Docker build avec cache → changements React non visibles - **Cause:** CRA buildait le React Ă  chaque `docker-compose up --build`, mais le cache Docker gardait l'ancien rĂ©sultat - **Solution:** Build React **AVANT** Docker avec `npm run build` ### 🚀 Workflow RecommandĂ© ```bash # 1. Éditer le code vim frontend/src/pages/DashboardPage.jsx # 2. Build et deploy (TOUT EN UN) make build # ✹ Les changements sont visibles immĂ©diatement! ``` ### 📊 Comment ça fonctionne 1. ✅ `npm run build` dans `frontend/` → crĂ©e `frontend/build/` 2. ✅ Copie le build dans `build/frontend/` 3. ✅ CrĂ©e un Dockerfile qui utilise **Nginx** pour servir le build statique 4. ✅ Docker-compose lance les conteneurs avec le build frais 5. ✅ **BONUS:** Nginx optimise le cache des assets et gĂšre React Router ### 📁 Structure aprĂšs `make build` ``` build/ ├── docker-compose.yml # Orchestration ├── init.sql # Init MariaDB ├── frontend/ │ ├── Dockerfile # Nginx + static files │ ├── nginx.conf # Config React SPA (try_files) │ └── [fichiers React compilĂ©s] └── backend/ ├── Dockerfile # Python FastAPI ├── pyproject.toml └── [fichiers Python] ``` ### 🔑 Commandes principales ```bash # Build complet (recommandĂ© aprĂšs changements au code) make build # Clean + npm build + docker build + deploy # RedĂ©marrage sans rebuild (si rien n'a changĂ© au code) make up # Juste redĂ©marrer les conteneurs existants # ArrĂȘter les services make down # Voir les logs en temps rĂ©el make logs-frontend # Logs du frontend (Nginx) make logs-backend # Logs du backend (FastAPI) # Nettoyer complĂštement make clean # Supprime build/, frontend/build/, images Docker ``` ### 📝 Exemple: Corriger la Navigation Dashboard ```bash # 1. Éditer le fichier vim frontend/src/pages/DashboardPage.jsx # → Ajoute useLocation pour dĂ©tecter les changements de route # 2. Sauvegarder et builder make build # → npm run build → docker build → docker-compose up -d # 3. VĂ©rifier dans le navigateur # http://localhost:3000/dashboard/actifs # ✅ Le filtre change maintenant correctement! ``` ### ⚙ Scripts et Fichiers | Fichier | RĂŽle | |---------|------| | `build.sh` | Script de build complet (npm build + docker) | | `Makefile` | Commandes pratiques (make build, make up, etc) | | `build/docker-compose.yml` | GĂ©nĂ©rĂ© automatiquement, orchestration | | `.claude/` | Documentation (ce fichier) | ### 🌐 URLs d'accĂšs aprĂšs `make build` - **Frontend:** http://localhost:3000 - **Backend:** http://localhost:8000 - **Database:** localhost:3306 ### ✹ Avantages de cette approche ✅ **Pas de cache Docker** → changements visibles **immĂ©diatement** ✅ **Build production rĂ©el** → `npm run build` (pas de dev server) ✅ **Nginx optimisĂ©** → Cache des assets, gestion React Router ✅ **Simple et rapide** → Une commande: `make build` ✅ **Production-ready** → Comme en production rĂ©elle ### ⚠ Points importants 1. **AprĂšs modifier le frontend** → Toujours faire `make build` 2. **AprĂšs modifier le backend** → `make build` (ou `make up` si pas de changement Ă  la structure) 3. **Pour nettoyer** → `make clean` (supprime tout, build Ă  zĂ©ro) 4. **Les fichiers `build/`** → À .gitignore (fichiers gĂ©nĂ©rĂ©s) ### 🔍 Troubleshooting **Les changements React ne sont pas visibles?** ```bash make clean # Nettoie tout make build # Rebuild from scratch ``` **Port dĂ©jĂ  utilisĂ©?** ```bash make down # ArrĂȘte les conteneurs make up # RedĂ©marre ``` **Voir ce qui se passe?** ```bash cd build docker-compose logs -f frontend # Voir tous les logs Nginx docker-compose logs -f backend # Voir tous les logs FastAPI ``` ### 📚 RĂ©fĂ©rence: InspirĂ© par L_Onomathoppee Ce workflow est basĂ© sur le projet L_Onomathoppee qui: - Build le frontend React AVANT Docker - Utilise Nginx pour servir les fichiers statiques - GĂšre correctement React Router avec `try_files` - Cache optimisĂ© pour les assets Voir: ~/L_Onomathoppee/build.sh pour la version complĂšte