https://github.com/henintsoaheriniaina/task-manager-backend
Backend for a university task manager project
https://github.com/henintsoaheriniaina/task-manager-backend
bun express jwt typescript zod
Last synced: about 2 months ago
JSON representation
Backend for a university task manager project
- Host: GitHub
- URL: https://github.com/henintsoaheriniaina/task-manager-backend
- Owner: henintsoaheriniaina
- Created: 2026-01-21T04:36:47.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-01-30T18:26:44.000Z (5 months ago)
- Last Synced: 2026-04-28T15:48:53.205Z (about 2 months ago)
- Topics: bun, express, jwt, typescript, zod
- Language: TypeScript
- Homepage: https://power-tasks-api.onrender.com
- Size: 87.9 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🚀 Task Manager - Plateforme de Gestion de Tâches Collaboratives ( Baceknd )
Application Fullstack MERN avec authentification JWT, gestion de rôles, et interface moderne.
## 📋 Table des Matières
- [Fonctionnalités](#fonctionnalités)
- [Technologies Utilisées](#technologies-utilisées)
- [Architecture](#architecture)
- [Installation](#installation)
- [Configuration](#configuration)
- [Utilisation](#utilisation)
- [API Documentation](#api-documentation)
- [Structure du Projet](#structure-du-projet)
## ✨ Fonctionnalités
- ✅ Authentification sécurisée (JWT + HTTP-Only Cookies)
- ✅ CRUD complet des utilisateurs
- ✅ CRUD complet des tâches
- ✅ Attribution de tâches aux utilisateurs
- ✅ Gestion des statuts (Todo / In Progress / Completed)
- ✅ Validation Zod sur toutes les routes
- ✅ Gestion globale des erreurs avec Express Async Handler
- ✅ Protection des routes avec middleware
- ✅ Système de rôles (Admin / User)
## 🛠 Technologies Utilisées
- **Runtime**: Node.js
- **Framework**: Express.js
- **Base de données**: MongoDB avec Mongoose
- **Langage**: TypeScript
- **Validation**: Zod
- **Authentification**: JWT + bcryptjs
- **Gestion d'erreurs**: Express Async Handler
## 🏗 Architecture
```
backend/ # API REST Node.js
├── src/
│ ├── config/ # Configuration DB & env
│ ├── controllers/ # Logique métier
│ ├── middleware/ # Auth, validation, errors
│ ├── models/ # Modèles Mongoose
│ ├── routes/ # Routes Express
│ ├── schemas/ # Validation Zod
│ ├── types/ # Types TypeScript
│ └── utils/ # Utilitaires
└── ...
```
## 📦 Installation
### Prérequis
- Node.js (v18+)
- MongoDB (local ou Atlas)
- bun
### 1. Cloner le repository
```bash
git clone https://github.com/henintsoaheriniaina/task-manager-backend.git
cd task-manager-backend
```
### 2. Installation
```bash
bun install
```
Créer un fichier `.env` :
```bash
cp .env.example .env
```
Configurer les variables d'environnement dans `.env` :
```env
NODE_ENV=development
PORT=8000
MONGODB_URI=mongodb://localhost:27017/task-manager-backend
JWT_SECRET=votre_secret_jwt_tres_securise_minimum_32_caracteres
JWT_EXPIRE=7d
COOKIE_EXPIRE=7
FRONTEND_URL=http://localhost:5173
```
## 🚀 Utilisation
```bash
cd backend
bun dev
```
Le serveur démarre sur `http://localhost:8000`
## 📚 API Documentation
### Base URL
```
http://localhost:8000/api
```
### Endpoints
#### Authentication
| Méthode | Endpoint | Description | Auth |
| ------- | ---------------- | -------------------------------- | ---- |
| POST | `/auth/register` | Créer un compte | Non |
| POST | `/auth/login` | Se connecter | Non |
| POST | `/auth/logout` | Se déconnecter | Non |
| GET | `/auth/me` | Récupérer l'utilisateur connecté | Oui |
#### Users
| Méthode | Endpoint | Description | Auth |
| ------- | --------------------------- | ---------------------- | ----- |
| GET | `/users` | Liste des utilisateurs | Admin |
| GET | `/users/:id` | Détails utilisateur | Oui |
| PUT | `/users/:id` | Modifier utilisateur | Admin |
| DELETE | `/users/:id` | Supprimer utilisateur | Admin |
| PUT | `/users/me/change-password` | Changer mot de passe | Oui |
#### Tasks
| Méthode | Endpoint | Description | Auth |
| ------- | -------------------- | ------------------- | ---- |
| GET | `/tasks` | Liste des tâches | Oui |
| GET | `/tasks?status=todo` | Filtrer par statut | Oui |
| GET | `/tasks/:id` | Détails d'une tâche | Oui |
| POST | `/tasks` | Créer une tâche | Oui |
| PUT | `/tasks/:id` | Modifier une tâche | Oui |
| DELETE | `/tasks/:id` | Supprimer une tâche | Oui |
### Exemples de Requêtes
#### Register
```bash
POST /api/auth/register
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com",
"password": "password123"
}
```
#### Login
```bash
POST /api/auth/login
Content-Type: application/json
{
"email": "john@example.com",
"password": "password123"
}
```
#### Create Task
```bash
POST /api/tasks
Content-Type: application/json
Cookie: token=
{
"title": "Nouvelle tâche",
"description": "Description de la tâche",
"status": "todo",
"assignedTo": "user_id",
"dueDate": "2026-01-30T00:00:00.000Z"
}
```
## 🔐 Système de Rôles
### Admin
- Gérer tous les utilisateurs (CRUD)
- Voir toutes les tâches
- Créer, modifier, supprimer n'importe quelle tâche
- Assigner des tâches à n'importe quel utilisateur
### User
- Voir uniquement ses tâches (créées ou assignées)
- Créer de nouvelles tâches
- Modifier/supprimer uniquement ses propres tâches
- Changer son mot de passe
## 🔒 Sécurité
- ✅ Mots de passe hashés avec bcrypt (10 rounds)
- ✅ JWT stockés dans des cookies HTTP-Only
- ✅ Validation stricte avec Zod côté backend et frontend
- ✅ Protection CORS configurée
- ✅ Middleware d'authentification sur toutes les routes protégées
- ✅ Vérification des rôles pour les actions sensibles
## 📝 Variables d'Environnement
### Backend (.env)
```env
NODE_ENV=development|production
PORT=8000
MONGODB_URI=mongodb://...
JWT_SECRET=
JWT_EXPIRE=7d
COOKIE_EXPIRE=7
FRONTEND_URL=http://localhost:5173
```
## 📧 Contact
Pour toute question : rasolomampiononahenintsoaherin@gmail.com
---
## 🌐 Déploiement
Le backend est déployé et accessible à l'adresse : [https://task-manager-backend-qzy2.onrender.com](https://task-manager-backend-qzy2.onrender.com)
---
Powered by Henintsoa Heriniaina (Power) ⚡