# Guide d'Installation Rapide ## Installation en 5 minutes Ce guide vous permet d'installer et de démarrer l'application rapidement en environnement de développement. --- ## Prérequis Avant de commencer, assurez-vous d'avoir installé : - **Node.js 22+** : [Télécharger Node.js](https://nodejs.org/) - **MySQL 8.0+** ou **MariaDB 10.6+** : [Télécharger MySQL](https://dev.mysql.com/downloads/) - **Git** (optionnel) : [Télécharger Git](https://git-scm.com/) --- ## Étape 1 : Récupérer le projet ### Option A : Depuis l'archive ZIP ```bash # Extraire l'archive unzip formation-manager-itinova.zip cd formation-manager-itinova ``` ### Option B : Depuis Git (si disponible) ```bash # Cloner le dépôt git clone cd formation-manager-itinova ``` --- ## Étape 2 : Installer les dépendances ```bash # Installer pnpm si nécessaire npm install -g pnpm # Installer les dépendances du projet pnpm install ``` --- ## Étape 3 : Configurer la base de données ### 3.1 Créer la base de données ```bash # Se connecter à MySQL mysql -u root -p # Créer la base de données CREATE DATABASE formation_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; # Créer un utilisateur dédié (optionnel mais recommandé) CREATE USER 'formation_user'@'localhost' IDENTIFIED BY 'votre_mot_de_passe_securise'; GRANT ALL PRIVILEGES ON formation_manager.* TO 'formation_user'@'localhost'; FLUSH PRIVILEGES; # Quitter MySQL EXIT; ``` ### 3.2 Configurer les variables d'environnement Créer un fichier `.env` à la racine du projet : ```env # Base de données DATABASE_URL=mysql://formation_user:votre_mot_de_passe_securise@localhost:3306/formation_manager # JWT Secret (générer une clé aléatoire) JWT_SECRET=votre_cle_secrete_aleatoire_tres_longue_minimum_32_caracteres # Application VITE_APP_TITLE=Gestion des Formations Manager Itinova VITE_APP_LOGO=/logo.svg NODE_ENV=development ``` **Note** : Pour générer une clé JWT sécurisée, vous pouvez utiliser : ```bash # Linux/Mac openssl rand -base64 32 # Node.js node -e "console.log(require('crypto').randomBytes(32).toString('base64'))" ``` ### 3.3 Initialiser la base de données ```bash # Appliquer les migrations (créer les tables) pnpm db:push ``` --- ## Étape 4 : Démarrer l'application ```bash # Lancer le serveur de développement pnpm dev ``` L'application sera accessible à l'adresse : **http://localhost:3000** --- ## Étape 5 : Première connexion ### Connexion avec l'utilisateur administrateur local 1. Ouvrir **http://localhost:3000** dans votre navigateur 2. Cliquer sur **"Se connecter localement"** 3. Utiliser les identifiants par défaut : - **Identifiant** : `adminServFormation` - **Mot de passe** : `Itinova69!` **Important** : Cet utilisateur est créé automatiquement au premier lancement et ne peut pas être supprimé. --- ## Configuration initiale Une fois connecté, vous pouvez : ### 1. Configurer l'envoi d'emails (optionnel) 1. Créer un compte sur [Resend](https://resend.com) 2. Générer une clé API 3. Dans l'application, aller dans **Configuration SMTP** 4. Saisir : - **Clé API Resend** : votre clé API - **Email expéditeur** : votre email vérifié - **Nom de l'expéditeur** : Itinova Formation 5. Activer le mode **Production** ### 2. Créer des utilisateurs supplémentaires 1. Aller dans **Utilisateurs** 2. Cliquer sur **Ajouter un utilisateur** 3. Remplir les informations : - Nom d'utilisateur - Mot de passe - Email - Rôle (admin ou user) ### 3. Créer vos premières formations 1. Aller dans **Formations** 2. Cliquer sur **Nouvelle formation** 3. Remplir les informations de la formation 4. Créer des séquences associées ### 4. Importer les apprenants 1. Aller dans **Apprenants** 2. Ajouter les apprenants un par un ou créer un script d'import --- ## Commandes utiles ```bash # Démarrer le serveur de développement pnpm dev # Builder pour la production pnpm build # Démarrer en mode production pnpm start # Appliquer les migrations pnpm db:push # Générer les migrations (après modification du schéma) pnpm db:generate # Ouvrir Drizzle Studio (interface graphique pour la base de données) pnpm db:studio ``` --- ## Structure du projet ``` formation-manager-itinova/ ├── client/ # Application frontend (React) │ ├── public/ # Fichiers statiques │ └── src/ │ ├── pages/ # Pages de l'application │ ├── components/ # Composants réutilisables │ └── lib/ # Bibliothèques et utilitaires ├── server/ # Application backend (Express + tRPC) │ ├── routers.ts # Définition des routes API │ ├── db.ts # Fonctions d'accès à la base de données │ └── _core/ # Configuration du serveur ├── drizzle/ # Schéma et migrations de base de données │ └── schema.ts # Définition des tables ├── shared/ # Code partagé entre client et serveur ├── .env # Variables d'environnement (à créer) ├── package.json # Dépendances du projet ├── deploy.sh # Script de déploiement automatique ├── DEPLOYMENT.md # Guide de déploiement complet └── README.md # Documentation principale ``` --- ## Dépannage rapide ### L'application ne démarre pas **Erreur : "Cannot find module"** ```bash # Réinstaller les dépendances rm -rf node_modules pnpm install ``` **Erreur : "ECONNREFUSED" (connexion à la base de données)** ```bash # Vérifier que MySQL est démarré sudo systemctl status mysql # Vérifier l'URL de connexion dans .env cat .env | grep DATABASE_URL ``` ### Les migrations échouent ```bash # Vérifier que la base de données existe mysql -u root -p -e "SHOW DATABASES;" # Recréer la base de données si nécessaire mysql -u root -p -e "DROP DATABASE IF EXISTS formation_manager; CREATE DATABASE formation_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" # Réappliquer les migrations pnpm db:push ``` ### Impossible de se connecter **Vérifier que JWT_SECRET est défini** ```bash cat .env | grep JWT_SECRET ``` Si vide, générer une nouvelle clé : ```bash echo "JWT_SECRET=$(openssl rand -base64 32)" >> .env ``` --- ## Prochaines étapes Une fois l'installation terminée : 1. **Lire la documentation complète** : `DEPLOYMENT.md` 2. **Personnaliser les templates d'emails** : Menu "Templates d'emails" 3. **Configurer les rappels automatiques** : Menu "Rappels" 4. **Tester l'envoi d'emails** : Configuration SMTP 5. **Déployer en production** : Suivre le guide `DEPLOYMENT.md` --- ## Support Pour toute question ou problème : - Consulter `DEPLOYMENT.md` pour la documentation complète - Vérifier les logs de l'application - Contacter l'équipe de développement --- **Bon déploiement ! 🚀**