Files
formation-manager-itinova/INSTALL.md

6.8 KiB

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é :


Étape 1 : Récupérer le projet

Option A : Depuis l'archive ZIP

# Extraire l'archive
unzip formation-manager-itinova.zip
cd formation-manager-itinova

Option B : Depuis Git (si disponible)

# Cloner le dépôt
git clone <url-du-depot>
cd formation-manager-itinova

Étape 2 : Installer les dépendances

# 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

# 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 :

# 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 :

# 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

# Appliquer les migrations (créer les tables)
pnpm db:push

Étape 4 : Démarrer l'application

# 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
  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

# 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"

# Réinstaller les dépendances
rm -rf node_modules
pnpm install

Erreur : "ECONNREFUSED" (connexion à la base de données)

# 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

# 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

cat .env | grep JWT_SECRET

Si vide, générer une nouvelle clé :

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 ! 🚀