API REST minimaliste pour gérer des utilisateurs identifiés par une clé API et leurs tâches Todo associées.
Conçue pour être simple à déployer, à utiliser et à étendre.
- Clé API générée automatiquement à la création d’un utilisateur (
POST /users
) - Gestion complète des tâches (CRUD) par utilisateur
- Authentification via header
Authorization: <apiKey>
- Mini système de rate limiting sur la création d’utilisateurs
- Stockage en mémoire (Map) — parfait pour test et dev rapide
- Node.js >= 16.x (testé sur v22.1)
- NPM ou Yarn
- Clone ce dépôt :
git clone <url_du_repo>
cd mini-todo-api
- Installe les dépendances :
npm install
- Lance le serveur :
node server.js
- L’API écoute sur
http://localhost:3000
par défaut.
mini-todo-api/
├── server.js # Serveur Express principal
├── Middleware/
│ ├── authMiddleware.js # Authentification API Key
│ └── rateLimitMiddleware.js # Limitation création user
├── package.json
└── README.md
curl -X POST http://localhost:3000/users
Réponse JSON :
{ "apiKey": "cle_api_unique_hex" }
Toutes les autres routes exigent un header :
Authorization: <apiKey>
Méthode | Route | Description |
---|---|---|
POST | /users | Crée un utilisateur et génère clé |
GET | /tasks | Liste toutes les tâches |
POST | /tasks | Ajoute une tâche |
PUT | /tasks/:id | Modifie une tâche |
DELETE | /tasks/:id | Supprime une tâche |
- authMiddleware.js : extrait la clé API depuis le header
Authorization
, vérifie si valide. - rateLimitMiddleware.js : limite la fréquence de création d’utilisateur pour éviter spam.
- Les données sont stockées en mémoire dans des
Map
(users
ettasks
). Pas de persistance.
- Change le port dans
server.js
si besoin. - Ajoute une vraie base de données pour production (MongoDB, PostgreSQL, etc.).
- Améliore le rate limiting (ex : Redis, IP tracking plus avancé).
- Sécurise l’API avec HTTPS, logs, monitoring.
Les contributions sont bienvenues : pull requests, issues, idées.
MIT
Pour questions ou améliorations, contacte-moi sur discord.
Merci à chatGPT pour les README.md et le fichier index.html d'exemple ! Je ne vous cache pas que ce n'es pas mon poins fort le frontend et la doc !
Ne lâche rien, ce backend est solide pour commencer !