291 lines
6.8 KiB
Markdown
291 lines
6.8 KiB
Markdown
# 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 <url-du-depot>
|
|
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 ! 🚀**
|