Checkpoint: Correction de l'authentification locale : utilisation de sdk.createSessionToken() au lieu de jsonwebtoken pour compatibilité avec le système OAuth
This commit is contained in:
290
INSTALL.md
Normal file
290
INSTALL.md
Normal file
@@ -0,0 +1,290 @@
|
||||
# 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 ! 🚀**
|
||||
Reference in New Issue
Block a user