Application web complète de gestion de flotte de transport routier permettant le suivi des trajets, la consommation de carburant, et la maintenance des véhicules.
- Fonctionnalités
- Technologies Utilisées
- Architecture
- Prérequis
- Installation
- Configuration
- Démarrage
- Déploiement Docker
- Tests
- Structure du Projet
- API Documentation
- Contributeurs
- ✅ Gestion complète de la flotte (camions, remorques, pneus)
- ✅ Création et assignation des trajets aux chauffeurs
- ✅ Rapports détaillés : consommation, kilométrage, maintenance
- ✅ Configuration des règles de maintenance périodique
- ✅ Gestion des utilisateurs et des permissions
- ✅ Visualisation des trajets assignés
- ✅ Téléchargement des ordres de mission en PDF
- ✅ Mise à jour du statut des trajets (à faire, en cours, terminé)
- ✅ Saisie du kilométrage et volume de gasoil
- ✅ Signalement de l'état des véhicules
- Node.js - Runtime JavaScript
- Express.js - Framework web
- MongoDB - Base de données NoSQL
- Mongoose - ODM pour MongoDB
- JWT - Authentification et autorisation
- Jest - Tests unitaires
- PDFKit - Génération de PDF
- React.js - Bibliothèque UI
- Redux / Context API - Gestion d'état global
- React Router - Routing avec Nested Routes
- Axios - Client HTTP
- Tailwind CSS - Styling
- Docker - Conteneurisation
- Docker Compose - Orchestration des conteneurs
- Git - Contrôle de version
TrackFlow/
├── backend/
│ ├── src/
│ │ ├── config/ # Configuration de l'app
│ │ ├── controllers/ # Logique métier
│ │ ├── models/ # Modèles Mongoose
│ │ ├── routes/ # Définition des routes
│ │ ├── middlewares/ # Middlewares (auth, errors)
│ │ ├── services/ # Services métier
│ │ ├── utils/ # Utilitaires
│ │ └── app.js # Point d'entrée
│ ├── tests/ # Tests unitaires
│ ├── Dockerfile
│ └── package.json
│
├── frontend/
│ ├── src/
│ │ ├── components/ # Composants React
│ │ ├── pages/ # Pages de l'application
│ │ ├── hooks/ # Custom hooks
│ │ ├── context/ # Context API
│ │ ├── services/ # Services API
│ │ ├── utils/ # Utilitaires
│ │ └── App.js
│ ├── public/
│ ├── Dockerfile
│ └── package.json
│
├── docker-compose.yml
└── README.md
- Node.js >= 18.x
- MongoDB >= 6.x
- Docker >= 20.x (optionnel)
- Docker Compose >= 2.x (optionnel)
- npm ou yarn
git clone https://github.com/keltoummalouki/trackflow.git
cd TrackFlowcd backend
npm installcd frontend
npm installCréez un fichier .env dans le dossier backend/ :
# Server
PORT=5000
NODE_ENV=development
# Database
MONGODB_URI=mongodb://localhost:27017/trackflow
MONGODB_TEST_URI=mongodb://localhost:27017/trackflow_test
# JWT
JWT_SECRET=votre_secret_jwt_super_securise
JWT_EXPIRE=7d
# CORS
CORS_ORIGIN=http://localhost:3000
# PDF Generation
PDF_UPLOAD_PATH=./uploads/pdfsCréez un fichier .env dans le dossier frontend/ :
REACT_APP_API_URL=http://localhost:5000/api
REACT_APP_ENV=development# Si MongoDB est installé localement
mongodcd backend
npm run devLe serveur backend démarrera sur http://localhost:5000
cd frontend
npm startL'application frontend démarrera sur http://localhost:3000
# Build les images et démarre les conteneurs
docker-compose up --build
# En mode détaché
docker-compose up -d# Arrêter les conteneurs
docker-compose down
# Voir les logs
docker-compose logs -f
# Reconstruire une image spécifique
docker-compose build backend
docker-compose build frontend
# Accéder au conteneur backend
docker exec -it trackflow sh
# Accéder à MongoDB
docker exec -it trackflow_mongodb mongoshServices:
- frontend: Port 3000
- backend: Port 5000
- mongodb: Port 27017
Network: trackflow-networkcd backend
# Lancer tous les tests
npm test
# Tests en mode watch
npm run test:watch
# Coverage des tests
npm run test:coveragecd frontend
npm testbackend/src/
├── config/
│ └── database.js # Configuration MongoDB
├── controllers/
│ ├── authController.js # Authentification
│ ├── truckController.js # Gestion camions
│ ├── trailerController.js # Gestion remorques
│ ├── routeController.js # Gestion trajets
│ └── maintenanceController.js
├── models/
│ ├── User.js
│ ├── Truck.js
│ ├── Trailer.js
│ ├── Route.js
│ ├── Tire.js
│ └── Maintenance.js
├── routes/
│ ├── authRoutes.js
│ ├── truckRoutes.js
│ └── routeRoutes.js
├── middlewares/
│ ├── auth.js # Vérification JWT
│ ├── errorHandler.js # Gestion des erreurs
│ └── validation.js # Validation des données
└── services/
└── pdfService.js # Génération PDF
frontend/src/
├── components/
│ ├── common/ # Composants réutilisables
│ ├── admin/ # Composants admin
│ └── driver/ # Composants chauffeur
├── pages/
│ ├── Dashboard.js
│ ├── Login.js
│ ├── Trucks.js
│ └── Routes.js
├── context/
│ └── AuthContext.js # Context d'authentification
├── services/
│ └── api.js # Configuration Axios
└── utils/
└── helpers.js
POST /api/auth/register # Inscription
POST /api/auth/login # Connexion
GET /api/auth/me # Profil utilisateur
GET /api/trucks # Liste des camions
POST /api/trucks # Créer un camion
GET /api/trucks/:id # Détails d'un camion
PUT /api/trucks/:id # Modifier un camion
DELETE /api/trucks/:id # Supprimer un camion
GET /api/routes # Liste des trajets
POST /api/routes # Créer un trajet (Admin)
GET /api/routes/:id # Détails d'un trajet
PUT /api/routes/:id # Modifier un trajet
GET /api/routes/:id/pdf # Télécharger PDF
PATCH /api/routes/:id/status # Mettre à jour le statut
GET /api/maintenance # Liste des maintenances
POST /api/maintenance # Créer une maintenance
GET /api/maintenance/alerts # Alertes de maintenance
200- Succès201- Créé400- Mauvaise requête401- Non authentifié403- Non autorisé404- Non trouvé500- Erreur serveur
- Authentification JWT avec tokens sécurisés
- Validation des entrées utilisateur
- Protection contre les injections NoSQL
- Gestion des rôles et permissions
- CORS configuré
- Rate limiting (recommandé en production)
- ✅ DRY (Don't Repeat Yourself) - Code réutilisable
- ✅ SRP (Single Responsibility Principle) - Une fonction = une responsabilité
- ✅ Error Handling - Gestion robuste des erreurs
- ✅ Tests unitaires - Coverage des controllers
- ✅ Code modulaire - Organisation claire
- ✅ Nommage explicite - Variables et fonctions claires
- ✅ Documentation - Code commenté
- Notifications en temps réel (WebSockets)
- Module de géolocalisation GPS
- Dashboard avec graphiques avancés
- Export de rapports Excel
- Application mobile (React Native)
- Intégration avec systèmes ERP
Ce projet est développé dans le cadre d'une formation [2025] Concepteur⋅rice développeur⋅se d'applications.
Pour toute question ou suggestion :
- Email: keltoummalouki@gmail.com
- GitHub: @keltoummalouki
Date de création: 08/12/2025
Made with ❤️ for efficient fleet management