- 3 nouvelles tables DB : catalogueFormation, planFormation, planFormationItem - Backend tRPC : routers catalogue et planFormation avec CRUD complet, import CSV/Excel, suggestion automatique - Frontend : pages PlanFormation, PlanFormationDetail, CatalogueFormation + menu sidebar - Déployé sur le serveur de recette (TEST) : https://formations.recette.santinova-soft.org - Portail applicatif mis à jour avec la carte de l'application
Gestion des Formations Manager Itinova
Application web complète de gestion des formations pour Manager Itinova, permettant la planification, l'organisation et le suivi des formations avec gestion automatisée des inscriptions, rappels et communications.
📋 Table des matières
- Aperçu
- Fonctionnalités
- Technologies
- Installation rapide
- Documentation
- Architecture
- Utilisation
- Déploiement
- Maintenance
- Support
🎯 Aperçu
L'application Gestion des Formations Manager Itinova est une solution complète pour gérer l'ensemble du cycle de vie des formations :
- Création et planification des formations et séquences
- Gestion des apprenants et inscriptions avec validation automatique
- Génération automatique de documents (listes, feuilles de présence)
- Envoi automatique d'emails (confirmations, rappels)
- Calendrier interactif et système de rappels
- Rapports et statistiques détaillés
L'application offre deux modes d'authentification :
- Connexion Manus OAuth : pour les utilisateurs avec compte Manus (Google, Microsoft, Apple)
- Connexion locale : pour les administrateurs avec identifiant et mot de passe
✨ Fonctionnalités
🔐 Authentification dual
- Page de choix de connexion
- Authentification Manus OAuth (Google, Microsoft, Apple)
- Authentification locale par identifiant/mot de passe
- Gestion des rôles (admin, user)
- Utilisateur administrateur permanent non supprimable
📚 Gestion des formations
- CRUD complet des formations
- Support de multiples séquences par formation
- Jusqu'à 4 dates par séquence
- Champs personnalisés :
- Public cible (Directeurs, Chefs de service, Autre, Tous)
- Formateur avec autocomplétion
- Capacité maximale par séquence
- Lieu de formation
- Barre de progression colorée (vert/orange/rouge) selon le taux de remplissage
- Filtres et recherche avancée
👥 Gestion des apprenants
- CRUD complet des apprenants
- Fonction (Directeur, Chef de service, Autre)
- Page de détail par apprenant avec historique complet
- Système d'inscription avec :
- Validation de capacité automatique
- Détection anti-doublons
- Blocage automatique à J-15
- Alerte si public cible incompatible
📅 Calendrier et rappels
- Calendrier mensuel interactif
- Navigation par mois
- Visualisation des séquences par date
- Système de rappels automatiques configurables :
- Rappel J-7
- Rappel J-3
- Rappel J-1
- Rappel personnalisé
📄 Exports et documents
- Export Excel : listes d'inscrits avec toutes les informations
- Export PDF : listes d'inscrits formatées
- Feuilles de présence PDF :
- Logo Itinova
- Double signature (matin/après-midi)
- Signature formateur
- Informations complètes de la séquence
✉️ Communications automatiques
- Génération d'invitations Outlook (.ics)
- Emails automatiques :
- Email de confirmation d'inscription
- Email teaser (présentation de la formation)
- Email de rappel J-7
- Templates personnalisables avec variables dynamiques
- Configuration SMTP avec Resend
- Mode test et production
📊 Rapports et statistiques
- Tableau de bord avec indicateurs clés
- Répartition des apprenants par fonction
- Analyse public cible vs fonction réelle
- Statistiques de remplissage des séquences
- Historique des inscriptions
👤 Administration
- Gestion des utilisateurs
- Création, modification, activation/désactivation
- Attribution des rôles
- Utilisateur admin permanent (adminServFormation)
- Templates d'emails personnalisables
- Configuration SMTP centralisée
🛠 Technologies
Frontend
- React 19 : bibliothèque UI moderne
- Tailwind CSS 4 : framework CSS utility-first
- shadcn/ui : composants UI accessibles
- Wouter : routage léger
- TanStack Query : gestion des données asynchrones
- Recharts : visualisation de données
- date-fns : manipulation de dates
Backend
- Node.js 22 : runtime JavaScript
- Express 4 : framework web
- tRPC 11 : API type-safe end-to-end
- Drizzle ORM : ORM TypeScript-first
- MySQL/TiDB : base de données relationnelle
Outils
- TypeScript : typage statique
- Vite : build tool rapide
- pnpm : gestionnaire de paquets performant
- Vitest : framework de tests
Services externes
- Resend : envoi d'emails transactionnels
- Manus OAuth : authentification sociale
🚀 Installation rapide
Prérequis
- Node.js 22+
- MySQL 8.0+ ou MariaDB 10.6+
- pnpm (installé automatiquement avec Node.js)
Installation en 4 étapes
# 1. Installer les dépendances
pnpm install
# 2. Configurer les variables d'environnement
cp .env.example .env
# Éditer .env avec vos paramètres
# 3. Créer et initialiser la base de données
mysql -u root -p -e "CREATE DATABASE formation_manager CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
pnpm db:push
# 4. Démarrer l'application
pnpm dev
L'application sera accessible à http://localhost:3000
Connexion initiale
- Identifiant :
adminServFormation - Mot de passe :
Itinova69!
📖 Guide complet : voir INSTALL.md
📚 Documentation
- INSTALL.md : Guide d'installation rapide (5 minutes)
- DEPLOYMENT.md : Guide de déploiement complet
- deploy.sh : Script de déploiement automatique
🏗 Architecture
Structure du projet
formation-manager-itinova/
├── client/ # Application frontend
│ ├── public/ # Fichiers statiques
│ │ └── logo.svg # Logo de l'application
│ └── src/
│ ├── pages/ # Pages de l'application
│ │ ├── LoginChoice.tsx
│ │ ├── Login.tsx
│ │ ├── Dashboard.tsx
│ │ ├── Formations.tsx
│ │ ├── Sequences.tsx
│ │ ├── Apprenants.tsx
│ │ └── ...
│ ├── components/ # Composants réutilisables
│ │ ├── DashboardLayout.tsx
│ │ └── ui/ # Composants shadcn/ui
│ └── lib/ # Bibliothèques et utilitaires
│ └── trpc.ts # Client tRPC
├── server/ # Application backend
│ ├── routers.ts # Routes API tRPC
│ ├── db.ts # Fonctions d'accès BDD
│ └── _core/ # Configuration serveur
│ ├── index.ts # Point d'entrée
│ ├── trpc.ts # Configuration tRPC
│ ├── localAuth.ts # Authentification locale
│ └── ...
├── drizzle/ # Base de données
│ └── schema.ts # Schéma des tables
├── shared/ # Code partagé
│ └── const.ts # Constantes
├── .env # Variables d'environnement
├── package.json # Dépendances
├── deploy.sh # Script de déploiement
├── DEPLOYMENT.md # Guide de déploiement
├── INSTALL.md # Guide d'installation
└── README.md # Ce fichier
Base de données
Tables principales :
users: utilisateurs de l'applicationformations: formations disponiblessequences: séquences de formation (dates)apprenants: apprenants inscritsinscriptions: inscriptions aux séquencesrappels: rappels configurésemail_templates: templates d'emailsemail_config: configuration SMTP
API (tRPC)
L'API utilise tRPC pour une communication type-safe entre le client et le serveur.
Routers principaux :
auth: authentification (me, logout)formations: CRUD formationssequences: CRUD séquencesapprenants: CRUD apprenantsinscriptions: gestion des inscriptionsrappels: gestion des rappelsemails: envoi d'emails et gestion des templatesusers: gestion des utilisateursstats: statistiques et rapports
💻 Utilisation
Commandes disponibles
# Développement
pnpm dev # Démarrer le serveur de développement
pnpm build # Builder pour la production
pnpm start # Démarrer en mode production
# Base de données
pnpm db:push # Appliquer les migrations
pnpm db:generate # Générer les migrations
pnpm db:studio # Ouvrir Drizzle Studio
# Tests
pnpm test # Lancer les tests
pnpm test:ui # Interface de tests Vitest
# Linting
pnpm lint # Vérifier le code
pnpm format # Formater le code
Workflow typique
-
Créer une formation
- Menu "Formations" → "Nouvelle formation"
- Remplir les informations
- Sauvegarder
-
Créer des séquences
- Cliquer sur la formation
- "Ajouter une séquence"
- Définir les dates (jusqu'à 4)
- Définir la capacité maximale
-
Ajouter des apprenants
- Menu "Apprenants" → "Ajouter un apprenant"
- Remplir nom, prénom, email, fonction
-
Gérer les inscriptions
- Depuis la page de la séquence
- Ou depuis la page de l'apprenant
- Validation automatique de la capacité
-
Configurer les rappels
- Menu "Rappels"
- Activer les rappels souhaités (J-7, J-3, J-1)
- Les emails seront envoyés automatiquement
-
Exporter les documents
- Liste des inscrits (Excel ou PDF)
- Feuille de présence (PDF)
- Invitation Outlook (.ics)
🌐 Déploiement
Option 1 : Plateforme Manus (recommandé)
L'application est optimisée pour la plateforme Manus :
- Créer un checkpoint
- Cliquer sur "Publish"
- Configurer le domaine
- Publier
Avantages : déploiement automatique, SSL, scaling, base de données incluse.
Option 2 : Serveur VPS
Utiliser le script de déploiement automatique :
# Rendre le script exécutable
chmod +x deploy.sh
# Lancer le déploiement
./deploy.sh
Le script effectue automatiquement :
- Vérification des prérequis
- Installation des dépendances
- Sauvegarde de la base de données
- Application des migrations
- Build de l'application
- Redémarrage du service
📖 Guide complet : voir DEPLOYMENT.md
🔧 Maintenance
Sauvegardes automatiques
Le script de déploiement crée automatiquement des sauvegardes de la base de données.
Pour configurer des sauvegardes régulières :
# Ajouter une tâche cron
crontab -e
# Sauvegarde quotidienne à 2h du matin
0 2 * * * /chemin/vers/backup.sh
Mise à jour
# Récupérer les dernières modifications
git pull origin main
# Lancer le déploiement
./deploy.sh
Logs
# Logs de l'application (systemd)
sudo journalctl -u formation-manager -f
# Logs Nginx
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
📞 Support
Documentation
- Guide d'installation
- Guide de déploiement
- Code source commenté
Dépannage
Consultez la section "Dépannage" dans DEPLOYMENT.md pour les problèmes courants.
Contact
Pour toute question ou problème :
- Consulter la documentation
- Vérifier les logs de l'application
- Contacter l'équipe de développement
📝 Licence
Ce projet est la propriété de Manager Itinova. Tous droits réservés.
🙏 Crédits
Développé avec ❤️ pour Manager Itinova
Technologies utilisées :
- React, Tailwind CSS, shadcn/ui
- Node.js, Express, tRPC
- Drizzle ORM, MySQL
- Resend, Manus OAuth
Version : 1.0.0
Dernière mise à jour : 23 novembre 2025