Skip to content

KryssSampi/Mimo-Minder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Mimo-Minder

Application iOS de gestion de tâches et de projets — Projet UA2
Cours 25921 IFM · Développement d'applications mobiles pour iOS · H-2026


Présentation

Mimo-Minder est une application iOS native conçue avec SwiftUI qui permet de gérer ses tâches quotidiennes et ses projets de façon claire, fluide et personnalisée. Elle repose sur une interface soignée, une architecture MVVM rigoureuse, une persistance JSON locale et un onboarding animé au premier lancement.


Capture d'écran

Onboarding (Bienvenue) Accueil (Tableau de bord) Liste des tâches Liste des projets Création rapide Profil utilisateur Mascotte (Mimo)

Fonctionnalités principales

Tableau de bord (HomeView)

  • Vue d'ensemble en temps réel : tâches urgentes, projets actifs, progression globale
  • Raccourcis rapides vers chaque section de l'app via une grille de navigation
  • Affichage adaptatif selon le profil de l'utilisateur (prénom, avatar)

Gestion des tâches (TachesView + TaskDetailView)

  • Liste complète des tâches avec filtrage (Toutes / Aujourd'hui / En cours / Terminées / Archivées) et tri (Date · Priorité · Alphabétique)
  • Vue de détails complète : titre, date, priorité, tags, checklist, notes, projet lié
  • Édition inline directement dans la vue de détail
  • Swipe gauche → supprimer / archiver
  • Swipe droit → marquer comme terminée
  • Double tap → compléter instantanément
  • Menu contextuel (long press) → Modifier · Terminer · Archiver · Supprimer

Gestion des projets (ProjetsView + ProjectDetailView)

  • Liste des projets avec filtrage (Tous / Actifs / En pause / Terminés / Archivés)
  • Vue de détail avec jauge de progression et jauge de temps écoulé
  • Association des tâches existantes à un projet
  • Swipe → archiver / supprimer
  • Menu contextuel (long press) → Changer le statut · Archiver · Supprimer

Création rapide (CreateView)

  • Formulaire unique pour créer une tâche ou un projet (bascule animée)
  • Champs : titre, date limite, priorité, tags, checklist, couleur d'accent, description
  • Validation instantanée avec feedback haptique

Profil personnel (ProfileView)

  • Prénom, adresse e-mail, avatar parmi 6 personnages
  • Données sauvegardées en JSON et restaurées à chaque lancement

Onboarding animé (OnboardingView)

  • Affiché uniquement au premier lancement (@AppStorage)
  • Slide de bienvenue plein-écran (dégradé animé)
  • 6 slides de présentation des fonctionnalités (layout deux colonnes : vidéo en boucle + description)
  • Saisie du prénom et de l'e-mail avant d'accéder à l'app

Architecture

Le projet suit le pattern MVVM (Model — View — ViewModel) avec une séparation claire des responsabilités :

Mimo-minder/
├── App/
│   ├── mimoMinderApp.swift      # Point d'entrée, injection des environnements
│   ├── AppTheme.swift           # Tokens de design (couleurs, typographie)
│   └── NavDestination.swift     # Destinations de navigation typées
│
├── Models/
│   ├── Task.swift               # Modèle de tâche (struct, Codable)
│   ├── Project.swift            # Modèle de projet (struct, Codable)
│   └── Enum.swift               # Enums : priorité, statut, filtres, destinations
│
├── ViewModels/
│   ├── TaskViewModel.swift      # CRUD tâches, filtrage, tri, persistance
│   └── ProjetViewModel.swift    # CRUD projets, archivage, liaison tâches
│
├── Services/
│   ├── PersistenceManager.swift # Sauvegarde/chargement JSON dans Documents/
│   ├── NavigationState.swift    # État de navigation partagé entre vues
│   └── ToastManager.swift       # Notifications toast non-bloquantes
│
├── Views/
│   ├── MainView.swift           # Conteneur principal (sidebar + onglets)
│   ├── HomeView.swift           # Tableau de bord
│   ├── TachesView.swift         # Liste des tâches
│   ├── TaskDetailView.swift     # Détail et édition d'une tâche
│   ├── ProjetsView.swift        # Liste des projets
│   ├── ProjectDetailView.swift  # Détail et édition d'un projet
│   ├── CreateView.swift         # Formulaire de création
│   ├── ProfileView.swift        # Profil utilisateur
│   └── OnboardingView.swift     # Écran de bienvenue (premier lancement)
│
├── Components/
│   ├── TaskCard.swift           # Carte de tâche (gestes, menu contextuel)
│   ├── ProjectCard.swift        # Carte de projet (gestes, menu contextuel)
│   ├── TaskCardList.swift       # Liste réutilisable de tâches
│   ├── ProjectCardList.swift    # Liste réutilisable de projets
│   ├── NavigationGrid.swift     # Grille de raccourcis (HomeView)
│   ├── SideNavBar.swift         # Navigation latérale
│   └── ToastOverlay.swift       # Overlay de notifications
│
└── Helpers/
    └── helpers.swift            # Extensions utilitaires (Color, Date, etc.)

Exigences techniques — Récapitulatif

ID Exigence Implémentation
F-01 Liste d'éléments TaskCardList + ProjectCardList depuis TaskViewModel / ProjetViewModel
F-02 Vue de détails TaskDetailView + ProjectDetailView via NavigationStack
F-03 Min. 2 gestes Swipe (swipeActions), Double-tap (TapGesture(count:2)), Long-press (contextMenu)
F-04 Min. 1 menu contextuel .contextMenu sur TaskCard et ProjectCard
F-05 Interface SwiftUI 100 % SwiftUI, responsive, dark/light mode
A-01 Architecture MVVM @Observable · TaskViewModel · ProjetViewModel · séparation stricte
A-02 Commentaires // MARK:, docstrings ///, commentaires inline dans tous les fichiers
A-03 NavigationStack NavigationStack + .navigationDestination dans TachesView, HomeView, ProjetsView

Gestes implémentés

Geste Action
Swipe gauche TaskCard, ProjectCard Supprimer, archiver
Swipe droit TaskCard Marquer comme terminée
Double-tap TaskCard Compléter la tâche instantanément
Long-press TaskCard, ProjectCard Ouvre le menu contextuel

Stack technique

Technologie Rôle
SwiftUI + iOS 17 Interface utilisateur complète
@Observable (Swift 5.9) ViewModels réactifs sans ObservableObject
AVFoundation + AVKit Vidéos en boucle dans l'onboarding
JSONEncoder / JSONDecoder Persistance locale des données
UserDefaults + @AppStorage Préférences légères (filtre, tri, onboarding)
UIImpactFeedbackGenerator Retour haptique sur les interactions clés

Installation

  1. Cloner ou décompresser le dossier du projet
  2. Ouvrir Tuto-swift.xcodeproj dans Xcode 16+
  3. Sélectionner un simulateur iPhone (iOS 17+)
  4. ⌘ + R pour lancer l'application

Aucune dépendance externe · Aucun Swift Package Manager requis


Auteur

Nom : Kryss Rayane

GitHub : Kryss_Sampi

Projet UA2 — IFM 25921
Enseignant : Mathieu Robson
Session : Hiver 2026

About

Mimo-Minder est une application iOS native conçue avec SwiftUI qui permet de gérer ses tâches quotidiennes et ses projets de façon claire, fluide et personnalisée. Elle repose sur une interface soignée, une architecture MVVM rigoureuse, une persistance JSON locale et un onboarding animé au premier lancement

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages