# BricoLoc - Legacy App Deployment Guide ## Déploiement sur Heroku ### Prérequis - Compte Heroku - Heroku CLI installé - Git installé ### Étapes de déploiement 1. **Connexion à Heroku** ```bash heroku login ``` 2. **Création de l'application** ```bash heroku create bricolociaac-legacy ``` 3. **Configuration des variables d'environnement** ```bash heroku config:set NODE_ENV=production heroku config:set PORT=3000 heroku config:set SESSION_SECRET=your-secret-key-here ``` 4. **Déploiement** ```bash git push heroku main ``` 5. **Initialisation de la base de données** ```bash heroku run npm run db:reset --app bricolociaac-legacy ``` 6. **Ouverture de l'application** ```bash heroku open ``` ## Déploiement sur Render.com ### Prérequis - Compte Render.com - Dépôt Git connecté ### Configuration 1. Créer un nouveau Web Service sur Render 2. Connecter votre dépôt GitHub 3. Configuration: - **Name**: bricolociaac-legacy - **Environment**: Node - **Build Command**: `cd apps/legacy-app && npm install` - **Start Command**: `cd apps/legacy-app && npm start` - **Auto-Deploy**: Yes ### Variables d'environnement - `NODE_ENV`: production - `SESSION_SECRET`: [générer une clé secrète] ## Déploiement sur Railway ### Configuration 1. Créer un nouveau projet sur Railway 2. Connecter votre dépôt GitHub 3. Railway détectera automatiquement Node.js 4. Ajouter les variables d'environnement: - `NODE_ENV`: production - `SESSION_SECRET`: [générer une clé secrète] ### Configuration personnalisée (railway.json) ```json { "build": { "builder": "NIXPACKS" }, "deploy": { "startCommand": "cd apps/legacy-app && npm start", "restartPolicyType": "ON_FAILURE", "restartPolicyMaxRetries": 10 } } ``` ## Déploiement sur Fly.io ### Prérequis ```bash curl -L https://fly.io/install.sh | sh flyctl auth login ``` ### Déploiement ```bash fly launch fly deploy ``` ## Notes importantes ### Base de données L'application utilise SQLite en production. Pour un déploiement en production réel, considérez: - Migrer vers PostgreSQL ou MySQL - Utiliser un service de base de données managé - Implémenter des sauvegardes régulières ### Sécurité ⚠️ **Cette application contient des vulnérabilités intentionnelles pour des fins pédagogiques.** Avant un déploiement en production réel: - Corriger toutes les vulnérabilités listées dans `apps/legacy-app/docs/BUGS.md` - Implémenter une authentification robuste - Ajouter CSRF protection - Configurer HTTPS/SSL - Valider tous les fichiers uploadés - Utiliser des secrets sécurisés (variables d'environnement) ### Stockage de fichiers Les uploads sont stockés localement. Pour la production: - Utiliser un service comme AWS S3, Cloudinary, ou Uploadcare - Implémenter une validation stricte des types de fichiers - Limiter la taille des fichiers ### Sessions Les sessions sont stockées dans SQLite. Pour la production: - Utiliser Redis ou un store de sessions dédié - Configurer correctement les cookies (secure, sameSite, etc.) ## Vérification du déploiement Après le déploiement, vérifier: 1. L'application démarre correctement 2. Les routes principales sont accessibles 3. La base de données est initialisée 4. Les sessions fonctionnent 5. Les fichiers statiques sont servis ## Troubleshooting ### L'application ne démarre pas - Vérifier les logs: `heroku logs --tail` (ou équivalent) - Vérifier que toutes les dépendances sont installées - Vérifier les variables d'environnement ### Base de données vide - Exécuter `npm run db:reset` sur le serveur - Vérifier que les fichiers de seed sont présents ### Erreurs de session - Vérifier que `SESSION_SECRET` est configuré - Vérifier les permissions du dossier de la base de données