Présentation du projet

ToDoLife est une application Android native de gestion de tâches développée dans le cadre du cours de développement mobile en BUT Informatique 2e année. Elle s'inspire de la méthode GTD (Getting Things Done) et a été intégralement codée en Java avec Material Design 3.

L'application inclut un système de projets avec un diagramme de Gantt interactif, un sélecteur de couleur HSV custom, une gestion de contextes personnalisés et une internationalisation FR/EN complète.


Informations générales

Champ Valeur
Cours Développement Mobile Android
Année BUT Informatique 2e année
Langage Java 11
Plateforme Android (minSdk 24 / targetSdk 36)
UI Framework Material Design 3
Persistance SharedPreferences + sérialisation JSON
Rendu APK de débogage + code source + diagrammes UML

Fonctionnalités principales

Gestion des tâches

Chaque tâche comporte un titre, une description, des dates de début et de fin, une priorité (Élevé / Moyen / Faible), un état (À faire / En cours / Terminé), un contexte et un lien web optionnel. L'interface principale affiche la liste des tâches via un RecyclerView avec un adapter personnalisé. Chaque item visualise la priorité via une barre de couleur latérale, le contexte via un badge et la date sous forme relative ("Aujourd'hui", "Demain", "Dans N jours"). Des gestes de balayage permettent de supprimer une tâche (swipe gauche, avec Snackbar d'annulation) ou de basculer son état terminé/à faire (swipe droite). Une bannière rouge s'affiche automatiquement en haut de liste si au moins une tâche est en retard.

Filtres, recherche et tri

L'application propose un système de filtrage combiné : recherche textuelle en temps réel sur le titre, la description et le contexte ; filtre par état (Toutes / À faire / En cours / Terminées) ; filtre multi-sélection par contexte (Maison, Bureau, Téléphone, PC + contextes personnalisés) ; filtre multi-sélection par priorité. Ces filtres sont tous combinables et placés dans une section repliable/dépliable pour économiser l'espace. Quatre modes de tri sont disponibles : par défaut (plus récent), par priorité, par date d'échéance et alphabétique.

Projets + diagramme de Gantt (bonus)

Un système de projets permet de regrouper des tâches : création/édition/suppression de projets avec nom, description et couleur d'accentuation personnalisée, association de tâches via un dialogue multi-sélection, réordonnancement par glisser-déposer. Chaque projet dispose de deux onglets : une vue liste classique et une vue Gantt interactive dessinée sur Canvas. Le diagramme de Gantt affiche une grille journalière avec labels hebdomadaires, des barres colorées selon l'état de chaque tâche (violet = À faire, orange = En cours, vert = Terminé), la durée en jours sur chaque barre et une ligne rouge verticale indiquant la date du jour. Un clic sur une barre ouvre le détail de la tâche correspondante.

Paramètres et personnalisation

L'écran de paramètres propose le basculement mode sombre / clair (AppCompatDelegate), le changement de langue FR/EN (recreate de l'activité), et la personnalisation des couleurs : 3 couleurs de priorité + 3 couleurs d'état, toutes modifiables via un sélecteur HSV custom. Les contextes personnalisés sont créables avec un emoji obligatoire, un nom et une couleur choisie via le même sélecteur.


Architecture technique

L'application suit une architecture en 4 couches strictement séparées :

Couche Contenu
Présentation 9 activités (taskListActivity, taskCreateActivity, taskDescActivity, taskSettingsActivity, ProjectListActivity, ProjectCreateActivity, ProjectDetailActivity, WebViewActivity, MainActivity)
Vue 3 adapters RecyclerView + 2 vues custom Canvas (ColorPickerView, GanttView)
Métier 4 managers Singletons (TaskManager, ProjectManager, ContextManager, SettingsManager)
Modèle 3 classes de données (Task, Project, CustomContext)
Persistance SharedPreferences avec sérialisation JSON (toJson / fromJson sur chaque modèle)