todo-max
v1.0.1
Published
Un gestionnaire de taches en ligne de commande developpée en TypeScript
Maintainers
Readme
todo-max
Un gestionnaire de tâches en ligne de commande développé en TypeScript avec une architecture orientée objets.
Fonctionnalités
- Créer, lister, afficher, modifier et supprimer des tâches
- Filtrer les tâches par statut (todo, in-progress, completed)
- Afficher les statistiques globales des tâches
- Décorateurs personnalisés (@timestamp, @validate, @measureTime)
- Stockage en fichiers JSON avec classe générique DataStore
- Validation des données avec Strategy Pattern
- Tests unitaires avec Vitest
Installation
git clone https://github.com/mx-989/todolist.git
cd todolist
npm installLe projet utilise tsx pour exécuter TypeScript directement sans compilation préalable.
Utilisation
Afficher l'aide
npm run cli helpCréer une tâche
create nom_tache [description] [status]
npm run cli create "Apprendre TypeScript"
npm run cli create "Faire les courses" "Acheter du pain" todoProtection contre les doublons : Si une tâche avec le même titre existe déjà, une confirmation sera demandée avant la création.
Lister les tâches
list [status]
npm run cli list
npm run cli list todo
npm run cli list completedAfficher une tâche par son ID
get id
npm run cli get 1Mettre à jour une tâche
update id [title] [description] [status]
npm run cli update 1 "Nouveau titre" "Description" in-progressSupprimer une tâche
delete id
npm run cli delete 1Statistiques
stats
npm run cli statsArchitecture
project-root/
├── data/ # Stockage JSON
│ └── tasks.json
├── models/ # Modèles de données
│ └── Task.ts
├── storage/ # Gestion du stockage
│ └── DataStore.ts
├── validators/ # Validation
│ ├── validation.ts
│ ├── decorators.ts
│ └── strategies/
│ └── ValidationStrategy.ts
├── cli/ # Interface ligne de commande
│ ├── TaskManager.ts
│ └── index.ts
├── tests/ # Tests unitaires
│ ├── TaskManager.test.ts
│ └── DataStore.test.ts
├── tsconfig.json
├── package.json
└── README.mdTests
npm test
npm run test:watch
npm run test:coverageDécorateurs
Le projet utilise trois décorateurs personnalisés :
@timestamp
Log automatiquement les appels de méthode avec horodatage :
@timestamp
createTask(title: string): Task {
// Logs: [2025-11-19T10:00:00.000Z] createTask
}@validate
Valide automatiquement les arguments d'une méthode :
@validate
deleteTask(id: number): boolean {
// Vérifie que l'ID est valide avant exécution
}@measureTime
Mesure le temps d'exécution d'une méthode :
@measureTime
listTasks(): Task[] {
// Logs: [PERF] listTasks exécuté en 1.23ms
}Licence
MIT
Structure des données
Les tâches sont stockées au format JSON avec la structure suivante :
{
"id": 1,
"title": "Apprendre TypeScript",
"description": "Suivre le cours complet",
"status": "in-progress",
"completed": false,
"createdAt": "2024-01-15T10:00:00.000Z",
"updatedAt": "2024-01-15T14:30:00.000Z"
}