Application Fastify complète pour la gestion de documents avec workflow d'étapes, authentification JWT, et système de rôles et permissions avancé.
- ✅ Authentification JWT avec refresh tokens
- 👥 Gestion des utilisateurs et système de rôles
- 📄 Workflow de documents avec étapes de validation
- 💬 Système de commentaires et notifications
- 📤 Upload de fichiers sécurisé
- 🔍 Recherche avec Elasticsearch
- 🔔 Notifications temps réel via WebSockets
- 🔐 Reset de mot de passe sécurisé
- Node.js (v16 ou supérieur)
- PostgreSQL (v13 ou supérieur)
- Elasticsearch (optionnel, pour la recherche)
- Cloner le projet
git clone <votre-repo>
cd myproject- Installer les dépendances
npm install- Configuration de l'environnement
cp .env.example .env
# Modifier .env avec vos paramètres- Configuration de la base de données
# Créer la base de données
createdb cenadi
# Exécuter les migrations
npm run migratenpm run devnpm startnpm run migrate # Exécuter toutes les migrations
npm run migrate:undo # Annuler la dernière migration
npm run migrate:fresh # Reset complet de la DBnpm testPOST /users/login- Connexion utilisateurPOST /users/register- InscriptionPOST /users/request-reset- Demande reset mot de passePOST /users/reset-password- Reset mot de passePOST /refresh-token- Refresh du token JWTPOST /logout- Déconnexion
GET /users- Liste des utilisateursGET /users/:id- Détails utilisateurPUT /users/:id- Modifier utilisateurDELETE /users/:id- Supprimer utilisateurGET /users/me- Profil utilisateur connecté
POST /forward-document- Transférer documentPOST /approve-document- Approuver documentGET /received-documents/:userId- Documents reçusGET /latest-document- Dernier document
GET /etapes/all- Toutes les étapesPOST /etapes- Créer étape(s)GET /etapes/:id- Détails étapePOST /etapes/affect- Affecter étape à document
├── config/ # Configuration (DB, upload, validation)
├── controllers/ # Logique métier
├── middleware/ # Middlewares (auth, rate limiting)
├── models/ # Modèles Sequelize
├── routes/ # Définition des routes
├── migrations/ # Migrations base de données
├── scripts/ # Scripts utilitaires
├── uploads/ # Fichiers uploadés
└── utils/ # Fonctions utilitaires
- JWT avec expiration configurable
- Rate limiting (100 req/15min)
- Validation des entrées avec Joi
- Hachage des mots de passe avec bcrypt
- Contrôle d'accès basé sur les rôles
- Upload sécurisé avec validation MIME
Les logs sont configurés avec Pino :
# Logs détaillés en développement
npm run dev
# Vérifier les logs de migration
npm run migrate:status# Vérifier la connexion
psql -U postgres -d cenadi -c "SELECT version();"
# État des migrations
npm run migrate:status- Fastify
- Sequelize
- dotenv
- cors
- @fastify/multipart
- @fastify/rate-limit
- nodemailer
- pdf-lib
- And others...
To run the tests, use the following command:
npm test