Nom du projet : TaskZen (Statistiques & Filtrage)
But principal : Permettre à l'utilisateur de créer, catégoriser, filtrer et suivre ses tâches, avec un tableau de bord de statistiques claires (tâches totales, terminées, en cours, par catégorie).
MVP :
- Ajouter une tâche (titre, catégorie, date optionnelle)
- Supprimer une tâche
- Marquer/demarquer comme terminée
- Filtrer par catégorie et par statut (toutes / terminées / en cours)
- Afficher des statistiques de base (total, terminé, en cours)
Bonus :
- Éditer une tâche (titre, catégorie)
- Rechercher par texte (search)
- Sauvegarde persistante (localStorage puis API)
- Tri (date création, alphabetical)
- UI améliorée (Tailwind), animations, responsive, light/dark theme
Flux utilisateur :
- Ouvre l'app → voit la liste de tâches et le dashboard statistiques.
- Ajoute une tâche rapide via le formulaire (titre obligatoire, catégorie facultative).
- Filtre la liste par catégorie ou statut.
- Coche une tâche terminée → statistiques mises à jour.
- Supprime ou édite une tâche si besoin.
Interactions principales :
- Formulaire d'ajout (input texte, select catégorie, bouton Ajouter)
- Liste de tâches (checkbox pour complété, bouton éditer, bouton supprimer)
- Barre de filtrage (select catégories + boutons statut)
- Dashboard (tuiles: total / complétées / en attente / par catégorie)
Wireframe rapide :
- En-tête : titre + bouton "nouvelle tâche"
- Gauche (ou top) : formulaire + filtres
- Centre : liste des tâches
- Droite (ou bas mobile) : statistiques (cartes)
/todo-advanced
├── index.html
├── styles.css // ou tailwind.config + styles
├── /src
│ ├── app.js // point d'entrée (initialisation)
│ ├── taskManager.js// logique CRUD (purs functions)
│ ├── ui.js // rendu DOM, event listeners
│ ├── storage.js // localStorage / API wrapper
│ └── stats.js // calculs de statistiques
└── /assets
Si tu utilises React (optionnel) :
/src
├── App.jsx
├── components/
│ ├── TaskList.jsx
│ ├── TaskItem.jsx
│ ├── TaskForm.jsx
│ ├── Filters.jsx
│ └── Dashboard.jsx
└── utils/
├── storage.js
└── stats.js
Structure d'une tâche :
const task = {
id: '1687349123456', // string ou number unique
title: 'Apprendre Promises',
description: 'Task description',
category: 'Études',
createdAt: '2025-10-10T12:00:00.000Z',
dueDate: null, // optionnel
status: 'Pending',
}Exemples de fonctions à implémenter (logique pure, sans DOM) :
createTask(title, category, dueDate)deleteTask(id)updateTask(id, updates)toggleComplete(id)getTasks(filter)-> retourne tableau filtrégetStats(tasks)-> { total, completed, pending, byCategory: {..} }saveTasks(tasks)/loadTasks()(storage wrapper)
- Initialise le repo + README + structure de fichiers.
- Implémente
taskManager.js: CRUD pur + tests via console. - Crée UI minimal (index.html + form + list) et
ui.jspourrenderTasks()et lier événements. - Ajoute filtres (category + status) et
getTasks(filter). - Implémente
stats.jset affiche le dashboard. - Ajoute
localStorage(save & load) viastorage.js. - Améliore UI (Tailwind), responsive, accessibilité.
- Ajoute fonctionnalités bonus (edit, search, tri).
- Tests, optimisations, et déploiement (Vercel/Netlify).
Itérations courtes : Fais des petites itérations (1 feature à la fois), commit souvent.
- Utilise Tailwind pour prototype rapide.
- Palette simple : 1 couleur primaire + 2 neutres.
- Cartes pour statistiques (icône + chiffre + label).
- Feedback utile : toasts pour suppression, confirmation modale pour suppression massive.
- Accessibilité : labels sur inputs, focus visibles, contrastes respectés.
Phase 1 (simple) : localStorage
// save
localStorage.setItem('todo_tasks', JSON.stringify(tasks))
// load
JSON.parse(localStorage.getItem('todo_tasks') || '[]')Phase 2 (avancé) : API REST (Node/Express) + DB (SQLite / Postgres / MongoDB)
- Routes :
GET /tasks,POST /tasks,PUT /tasks/:id,DELETE /tasks/:id
- Empêcher l'ajout d'une tâche vide.
- Gérer doublons d'ID si tu utilises random id.
- Vérifier que le filtrage fonctionne avec catégories vides.
- Comportement si localStorage est plein ou absent (mode offline).
- Tests manuels : ajouter/supprimer/toggle/filtrer et vérifier stats.
README doit contenir : but, features, capture d'écran, comment lancer (dev), commandes (si react/vite), et lien déployé.
Déploiement : Netlify / Vercel (front). Si backend : Render / Railway.
Jour 1 : Setup repo, structure, taskManager.js (CRUD).
Jour 2 : UI minimal + renderTasks() + connexion add/delete.
Jour 3 : Toggle complete + filtres (status + category).
Jour 4 : stats.js et affichage dashboard.
Jour 5 : localStorage + load/save automatique.
Jour 6 : Amélioration UI (Tailwind) + responsive.
Jour 7 : Tests, README, déploiement.
- Repo initialisé + README
- CRUD tasks (logique)
- UI de base (add/delete/list)
- Toggle complete
- Filtrage par catégorie & statut
- Dashboard statistiques
- Sauvegarde localStorage
- Responsive + styles
- Edit task (bonus)
- Search & tri (bonus)
- Déploiement (Netlify/Vercel)
- Ajoute des catégories par défaut : Travail, Personnel, Études, Autre.
- Prévois une fonction
normalizeCategory(name)pour éviter les doublons (ex: "Travail" vs "travail").