API Node.js permettant aux utilisateurs de déclarer leurs collectes de déchets, de cumuler des points, et de les convertir en dons pour des associations. Elle gère aussi les villes, les types de déchets, les utilisateurs (volontaires), et un système de classement (leaderboard).
- Langage : JavaScript (Node.js)
- Framework : Express
- Base de données : PostgreSQL (hébergée sur Neon)
- Authentification : via bcrypt (hash de mot de passe)
- Autres outils :
dotenv: gestion des variables d’environnementpg: connecteur PostgreSQLcors: autorisation des requêtes cross-origin
git clone https://github.com/laanatri/green-quest-back-end
cd green-quest-back-end
npm installCrée un fichier .env à la racine :
DATABASE_URL=postgresql://user:password@host/dbnameLance le serveur :
node app.jsLe serveur écoute sur le port 5001.
├── app.js
├── db.js
├── routes/
│ ├── associations.js
│ ├── cities.js
│ ├── collections.js
│ ├── donations.js
│ ├── leaderboard.js
│ ├── volunteers.js
│ └── wastes.js
└── utils/
├── city.js
├── helpers.js
└── middleware.js
- Authentification via la route
POST /volunteers/login - Vérification du mot de passe avec
bcrypt.compare - Les mots de passe sont stockés de manière sécurisée via hash (
bcrypt)
- 📍 Détection ou création automatique de ville (middleware
getOrCreateCity) - ♻️ Déclaration de collecte : avec ville, type de déchet, et attribution de points
- 🎁 Don : échange de points contre des dons à des associations
- 🏆 Leaderboard : classement par montant total de dons
- 🔎 Recherche de volontaires par nom ou ville
- ✏️ Mise à jour / suppression de volontaires
POST /volunteers/login→ Connexion d'un utilisateur
GET /volunteers→ Liste tous les utilisateursGET /volunteers/:username→ Détails d’un utilisateur par pseudoPOST /volunteers→ Création d’un nouvel utilisateurPATCH /volunteers/:id→ Mise à jour d’un utilisateurDELETE /volunteers/:username→ Suppression d’un utilisateur
GET /cities→ Liste des villes ayant au moins un volontaire
GET /wastes→ Liste des types de déchets avec leurs valeurs en points
POST /collections→ Enregistre une collecte- Body :
{ "volunteerId": 1, "quantitiesArray": [ { "wasteId": 2, "wastePoints": 10, "quantity": 3 } ], "city": { "title": "Paris", "zipcode": "75000", "lat": 48.8566, "lng": 2.3522 } }
- Body :
GET /collections/:id/:date→ Donne le détail des collectes par utilisateur et par mois
GET /donations→ Liste des donsPOST /donations→ Enregistre un don (et sa valeur)- Body :
{ "volunteerId": 1, "associationId": 2, "value": 50 }
- Body :
GET /leaderboard→ Récupère le classement des volontaires selon le montant total de dons
GET /associations→ Liste des associations
utils/city.js: Middleware pour retrouver ou créer une ville en base, utilisé automatiquement à la création d’un utilisateur ou d’une collecteutils/helpers.js: Fonction utilitaire pour le hash des mots de passeutils/middleware.js: Middleware pour rechercher un utilisateur par username
- Edwige Saves – @Edwige08
- Faty Diarra – @fatydm
- Victor Lepron – @VictorLpr
- Adélaïde Laanatri – @laanatri
- Ajout de tests unitaires (Jest, Supertest)
- Gestion d’erreurs centralisée
- Ajout d’un système de session ou de token (JWT)
- Pagination et filtres sur les listes (volunteers, donations, etc.)