Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

task_cli

Application CLI de gestion de tâches, écrite en Dart pur (aucune dépendance Flutter). Persistance locale au format JSON, tri par priorité ou par échéance, gestion d'erreurs via des exceptions personnalisées. dans le cadre du Flutter Fire Summer Camp

Prérequis

Vérifier l'installation :

dart --version

Installation

git clone https://github.com//task_cli.git
cd task_cli
dart pub get

Utilisation

# Ajouter une tâche
dart run bin/task_cli.dart add "Préparer le CTF" --priority=high --due=2026-08-01

# Ajouter une tâche urgente (priorité "high" imposée automatiquement)
dart run bin/task_cli.dart add "Corriger la faille critique" --urgent --due=2026-07-26

# Lister les tâches
dart run bin/task_cli.dart list
dart run bin/task_cli.dart list --sort=priority
dart run bin/task_cli.dart list --sort=date

# Marquer une tâche comme terminée
dart run bin/task_cli.dart done <id>

# Supprimer une tâche
dart run bin/task_cli.dart remove <id>

Les données sont persistées dans tasks.json, créé/mis à jour à la racine du projet à chaque commande qui modifie l'état.

Lancer les tests

dart test

Architecture

lib/
  exceptions/
    task_exceptions.dart   # Hiérarchie d'exceptions personnalisées
  models/
    priority.dart          # enum Priority (low/medium/high)
    task.dart               # Task (abstraite), interface JsonSerializable,
                             # NormalTask et UrgentTask (héritage)
  repository/
    repository.dart        # interface générique Repository<T>
    task_repository.dart   # TaskRepository implements Repository<Task>
                            # (persistance JSON)
  cli/
    task_cli_app.dart      # Parsing des commandes et affichage
  utils/
    id_generator.dart      # Génération d'identifiants
bin/
  task_cli.dart             # Point d'entrée
test/
  task_test.dart
  task_repository_test.dart

Concepts Dart illustrés

  • Classes abstraites + héritage : Task (abstraite) → NormalTask, UrgentTask
  • Interfaces : Task implements JsonSerializable, Comparable<Task>
  • Génériques : Repository<T>TaskRepository implements Repository<Task>
  • Exceptions personnalisées : TaskException (base) et ses sous-classes (TaskNotFoundException, InvalidPriorityException, InvalidDueDateException, EmptyTitleException, DuplicateTaskException, TaskPersistenceException)
  • Tests unitaires : package:test, couvrant modèles, tri, CRUD, erreurs et persistance

Licence

Projet pédagogique.

About

Projet de gestion de taches en dart pur dans le cadre du Flutter Fire Summer Camp

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages