{"id":30606936,"url":"https://github.com/azizbenismail/pfesoussebackend","last_synced_at":"2025-08-30T03:15:38.454Z","repository":{"id":309176636,"uuid":"1035382711","full_name":"AzizBenIsmail/PFESousseBackend","owner":"AzizBenIsmail","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-24T12:09:21.000Z","size":81,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-24T16:41:09.129Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AzizBenIsmail.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-10T09:27:35.000Z","updated_at":"2025-08-24T12:09:24.000Z","dependencies_parsed_at":"2025-08-10T11:37:39.615Z","dependency_job_id":"9c9575cb-792f-4cd1-83cb-422eada8fb2d","html_url":"https://github.com/AzizBenIsmail/PFESousseBackend","commit_stats":null,"previous_names":["azizbenismail/pfesoussebackend"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AzizBenIsmail/PFESousseBackend","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizBenIsmail%2FPFESousseBackend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizBenIsmail%2FPFESousseBackend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizBenIsmail%2FPFESousseBackend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizBenIsmail%2FPFESousseBackend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AzizBenIsmail","download_url":"https://codeload.github.com/AzizBenIsmail/PFESousseBackend/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AzizBenIsmail%2FPFESousseBackend/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272797801,"owners_count":24994662,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-30T03:15:33.094Z","updated_at":"2025-08-30T03:15:38.448Z","avatar_url":"https://github.com/AzizBenIsmail.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚗 PFESousse - API de Gestion Automobile\n\n## 📋 Description du Projet\n\n**PFESousse** est une API REST complète développée en Node.js pour la gestion d'un parc automobile. Cette application permet de gérer les utilisateurs, les voitures et les ordres de service avec une architecture modulaire et des fonctionnalités avancées.\n\n## ✨ Fonctionnalités Principales\n\n### 🔐 Gestion des Utilisateurs\n- **Authentification sécurisée** avec bcrypt\n- **Rôles multiples** : client, admin, etc.\n- **Gestion des profils** avec images\n- **Validation des données** robuste\n- **Recherche et filtrage** avancés\n\n### 🚗 Gestion des Voitures\n- **CRUD complet** pour le parc automobile\n- **Validation des matricules** (format XXX-XXX-XXXX)\n- **Gestion des statuts** (disponible, vendue, etc.)\n- **Recherche multicritères** (marque, modèle, prix, année)\n- **Upload d'images** avec gestion des doublons\n- **Statistiques avancées** du parc\n\n### 📋 Gestion des Ordres de Service\n- **Suivi des interventions** automobiles\n- **Gestion des réparations** et maintenances\n- **Historique des services** rendus\n\n## 🏗️ Architecture du Projet\n\n```\nPFESousse/\n├── 📁 config/                 # Configuration de la base de données\n├── 📁 Controllers/            # Contrôleurs de l'application\n├── 📁 middlewares/            # Middlewares personnalisés\n├── 📁 models/                 # Modèles Mongoose\n├── 📁 public/                 # Fichiers statiques et images\n├── 📁 routes/                 # Définition des routes\n├── 📁 services/               # Logique métier\n├── 📄 app.js                  # Point d'entrée de l'application\n├── 📄 package.json            # Dépendances et scripts\n└── 📄 README.md               # Documentation du projet\n```\n\n## 🚀 Technologies Utilisées\n\n### Backend\n- **Node.js** - Runtime JavaScript\n- **Express.js** - Framework web\n- **MongoDB** - Base de données NoSQL\n- **Mongoose** - ODM pour MongoDB\n\n### Sécurité \u0026 Utilitaires\n- **bcrypt** - Hachage des mots de passe\n- **multer** - Gestion des uploads de fichiers\n- **dotenv** - Variables d'environnement\n- **morgan** - Logging des requêtes HTTP\n\n### Développement\n- **nodemon** - Redémarrage automatique en développement\n- **ES6+** - Fonctionnalités JavaScript modernes\n\n## 📦 Installation et Configuration\n\n### Prérequis\n- **Node.js** (version 14 ou supérieure)\n- **MongoDB** (version 4.4 ou supérieure)\n- **npm** ou **yarn**\n\n### 1. Cloner le projet\n```bash\ngit clone \u003curl-du-repo\u003e\ncd PFESousse\n```\n\n### 2. Installer les dépendances\n```bash\nnpm install\n```\n\n### 3. Configuration des variables d'environnement\nCréer un fichier `.env` à la racine du projet :\n```env\n# Configuration du serveur\nPort=3000\n\n# Configuration de la base de données MongoDB\nUrl_Db=mongodb://localhost:27017/pfesousse\n\n# Autres variables d'environnement\nNODE_ENV=development\n```\n\n### 4. Démarrer l'application\n```bash\n# Mode développement (avec nodemon)\nnpm run dev\n\n# Mode production\nnpm start\n```\n\nL'application sera accessible sur `http://localhost:3000`\n\n## 🗄️ Structure de la Base de Données\n\n### Modèle Utilisateur (User)\n```javascript\n{\n  firstName: String,\n  lastName: String,\n  email: String (unique, requis),\n  password: String (min 12 caractères, validation complexe),\n  role: String (enum: \"client\", \"admin\", \"..\"),\n  age: Number,\n  user_Image: String (défaut: \"client.png\"),\n  isActive: Boolean,\n  isBanned: Boolean,\n  createdAt: Date,\n  updatedAt: Date\n}\n```\n\n### Modèle Voiture (Car)\n```javascript\n{\n  matricule: String (unique, format XXX-XXX-XXXX),\n  model: String (requis),\n  color: String (enum des couleurs),\n  brand: String (requis),\n  year: Number (1900-année+1),\n  price: Number (positif),\n  mileage: Number (positif),\n  fuelType: String (enum: essence, diesel, électrique, hybride, gpl),\n  transmission: String (enum: manuelle, automatique),\n  isAvailable: Boolean (défaut: true),\n  isSold: Boolean (défaut: false),\n  car_Image: String (défaut: \"default-car.png\"),\n  description: String (max 500 caractères),\n  features: [String],\n  createdAt: Date,\n  updatedAt: Date\n}\n```\n\n## 🔌 API Endpoints\n\n### Base URL\n```\nhttp://localhost:3000\n```\n\n### Routes Principales\n- **`/`** - Page d'accueil\n- **`/users`** - Gestion des utilisateurs\n- **`/cars`** - Gestion des voitures\n- **`/os`** - Gestion des ordres de service\n\n### Documentation Complète\nConsultez le fichier `API_DOCUMENTATION.md` pour une documentation détaillée de tous les endpoints.\n\n## 🔧 Fonctionnalités Avancées\n\n### Gestion des Images\n- **Upload automatique** dans `public/images/`\n- **Gestion des doublons** avec suffixe numérique\n- **Support de multiples formats** d'image\n- **Stockage organisé** par type d'entité\n\n### Validation des Données\n- **Validation Mongoose** avec schémas stricts\n- **Validation personnalisée** pour les matricules\n- **Gestion des erreurs** centralisée\n- **Messages d'erreur** en français\n\n### Sécurité\n- **Hachage des mots de passe** avec bcrypt\n- **Validation des entrées** utilisateur\n- **Gestion des sessions** sécurisée\n- **Protection contre les injections** MongoDB\n\n## 📊 Fonctionnalités de Recherche\n\n### Utilisateurs\n- Recherche par nom/prénom\n- Filtrage par âge\n- Tri par différents critères\n- Pagination des résultats\n\n### Voitures\n- Recherche par matricule\n- Filtrage par marque, modèle, couleur\n- Recherche par gamme de prix\n- Filtrage par année et type de carburant\n- Statistiques du parc automobile\n\n## 🚀 Scripts Disponibles\n\n```json\n{\n  \"start\": \"node app\",           // Démarrage en production\n  \"dev\": \"nodemon app\"          // Démarrage en développement\n}\n```\n\n## 🔍 Développement\n\n### Structure des Contrôleurs\nChaque contrôleur suit le pattern :\n```javascript\nmodule.exports.functionName = async (req, res) =\u003e {\n  try {\n    // Logique métier\n    res.status(200).json({ data });\n  } catch (error) {\n    res.status(500).json({ message: error.message });\n  }\n};\n```\n\n### Gestion des Erreurs\n- **Middleware d'erreur** global\n- **Codes de statut HTTP** appropriés\n- **Messages d'erreur** informatifs\n- **Logging** des erreurs\n\n### Middlewares\n- **Morgan** : Logging des requêtes\n- **Multer** : Gestion des uploads\n- **Cookie-parser** : Gestion des cookies\n- **Express.json** : Parsing du JSON\n\n## 📁 Organisation des Fichiers\n\n### Controllers/\n- `userController.js` - Logique des utilisateurs\n- `carController.js` - Logique des voitures\n- `osController.js` - Logique des ordres de service\n\n### Models/\n- `userModel.js` - Schéma utilisateur\n- `carModel.js` - Schéma voiture\n\n### Routes/\n- `index.js` - Routes principales\n- `userRouter.js` - Routes utilisateurs\n- `carRouter.js` - Routes voitures\n- `osRouter.js` - Routes ordres de service\n\n### Services/\n- `carService.js` - Logique métier des voitures\n- `osService.js` - Logique métier des ordres de service\n\n## 🧪 Tests et Qualité\n\n### Bonnes Pratiques\n- **Code modulaire** et réutilisable\n- **Gestion d'erreurs** robuste\n- **Validation des données** stricte\n- **Documentation** complète\n- **Structure cohérente** entre modules\n\n### Standards de Code\n- **ES6+** syntax\n- **Async/await** pour les opérations asynchrones\n- **Try/catch** pour la gestion d'erreurs\n- **Noms explicites** pour les variables et fonctions\n\n## 🌐 Déploiement\n\n### Variables d'Environnement de Production\n```env\nNODE_ENV=production\nPort=3000\nUrl_Db=mongodb://production-url:27017/pfesousse\n```\n\n### Process Manager (PM2)\n```bash\nnpm install -g pm2\npm2 start app.js --name \"pfesousse\"\npm2 save\npm2 startup\n```\n\n## 📚 Ressources et Documentation\n\n- **MongoDB** : [Documentation officielle](https://docs.mongodb.com/)\n- **Mongoose** : [Documentation officielle](https://mongoosejs.com/)\n- **Express.js** : [Documentation officielle](https://expressjs.com/)\n- **Node.js** : [Documentation officielle](https://nodejs.org/)\n\n## 🤝 Contribution\n\n### Comment Contribuer\n1. **Fork** le projet\n2. **Créer** une branche pour votre fonctionnalité\n3. **Commiter** vos changements\n4. **Pousser** vers la branche\n5. **Ouvrir** une Pull Request\n\n### Standards de Contribution\n- **Code propre** et bien documenté\n- **Tests** pour les nouvelles fonctionnalités\n- **Documentation** mise à jour\n- **Messages de commit** explicites\n\n## 📄 Licence\n\nCe projet est sous licence privée. Tous droits réservés.\n\n## 👥 Auteurs\n\n- **Équipe PFESousse** - Développement et maintenance\n\n## 📞 Support\n\nPour toute question ou support :\n- **Issues GitHub** : Créer une issue dans le repository\n- **Documentation** : Consulter les fichiers de documentation\n- **Code source** : Examiner les exemples dans les contrôleurs\n\n---\n\n## 🎯 Roadmap\n\n### Version 2.1.0\n- [ ] Authentification JWT\n- [ ] API de notifications\n- [ ] Système de logs avancé\n\n### Version 2.2.0\n- [ ] Interface d'administration\n- [ ] Rapports et analytics\n- [ ] Intégration SMS/Email\n\n### Version 3.0.0\n- [ ] Microservices architecture\n- [ ] Cache Redis\n- [ ] API GraphQL\n\n---\n\n**PFESousse** - Une solution complète pour la gestion automobile moderne ! 🚗✨\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazizbenismail%2Fpfesoussebackend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fazizbenismail%2Fpfesoussebackend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fazizbenismail%2Fpfesoussebackend/lists"}