Skip to content

Kevinmrgt/BoxingTimer

Repository files navigation

Boxing Timer 🥊

Une application mobile Flutter complète pour créer et gérer des entraînements de boxe avec des minuteurs personnalisables.

✨ Fonctionnalités

🏠 Écran d'accueil

  • Affichage de la liste des entraînements sauvegardés
  • Recherche d'entraînements par nom
  • Actions rapides : démarrer, modifier, dupliquer, supprimer, partager
  • Interface moderne avec Material Design 3

⚙️ Création/Édition d'entraînements

  • Nom personnalisable pour chaque entraînement
  • Configuration des phases optionnelles :
    • Échauffement (0-60 minutes)
    • Récupération (0-60 minutes)
  • Gestion des rounds :
    • Durée du round (1-30 minutes)
    • Durée du repos entre rounds (0-15 minutes)
    • Ajout/suppression de rounds dynamique
  • Résumé en temps réel avec statistiques

⏱️ Minuteur intelligent

  • Timer circulaire avec animation visuelle
  • Affichage clair du temps restant et de la phase actuelle
  • Progression globale et par phase
  • Contrôles intuitifs : Start, Pause, Reset, Skip
  • Informations contextuelles selon la phase

🔊 Signaux audio et vibrations

  • Signaux sonores pour chaque changement de phase
  • Vibrations configurables selon l'appareil
  • Compte à rebours audible pour les 3 dernières secondes
  • Sons différenciés par type de phase

💾 Sauvegarde locale

  • Stockage automatique des entraînements
  • Données persistantes avec SharedPreferences
  • Pas de connexion internet requise
  • Sauvegarde instantanée des modifications

🎨 Interface utilisateur

  • Design moderne et intuitif
  • Support du thème sombre/clair automatique
  • Interface responsive pour différents écrans
  • Animations fluides et feedback visuel
  • Couleurs contextuelles selon les phases

🔄 Partage et export

  • Export d'entraînements au format JSON
  • Partage via les applications installées
  • Import d'entraînements externes (bonus)

📱 Plateformes supportées

  • Android (API 21+)
  • iOS (iOS 11+)
  • Linux Desktop (pour développement/test)

🛠️ Installation et développement

Prérequis

  • Flutter SDK (>=3.0.0)
  • Dart SDK
  • Pour Linux : dépendances GStreamer
# Ubuntu/Debian
sudo apt update
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

Configuration

  1. Cloner le projet
git clone <repository_url>
cd BoxingTimer
  1. Installer les dépendances
flutter pub get
  1. Générer les fichiers de sérialisation
flutter packages pub run build_runner build
  1. Lancer l'application
# Android/iOS
flutter run

# Linux Desktop
flutter run -d linux

🏗️ Architecture

Modèles de données

  • Workout : Représente un entraînement complet
  • Round : Représente un round individuel
  • TimerState : État du minuteur pendant l'entraînement

Services

  • StorageService : Gestion du stockage local
  • AudioService : Gestion des sons et vibrations
  • TimerService : Logique du minuteur

Providers (Gestion d'état)

  • WorkoutProvider : Gestion des entraînements
  • TimerProvider : Gestion de l'état du minuteur

Écrans

  • HomeScreen : Écran d'accueil avec liste des entraînements
  • WorkoutEditScreen : Création/modification d'entraînements
  • TimerScreen : Minuteur principal pendant l'entraînement

Widgets réutilisables

  • WorkoutCard : Carte d'affichage d'un entraînement
  • CircularTimerWidget : Timer circulaire animé
  • TimerControlsWidget : Contrôles du minuteur
  • PhaseInfoWidget : Informations de la phase actuelle
  • EmptyStateWidget : Widget d'état vide

📦 Dépendances principales

  • provider : Gestion d'état
  • shared_preferences : Stockage local
  • json_annotation/json_serializable : Sérialisation JSON
  • audioplayers : Lecture de sons
  • vibration : Gestion des vibrations
  • share_plus : Partage de fichiers
  • path_provider : Gestion des chemins

🎯 Phases d'entraînement

  1. Échauffement (optionnel) - Préparation
  2. Rounds - Alternance entre effort et repos
  3. Récupération (optionnel) - Retour au calme

Chaque phase a :

  • Sa propre couleur visuelle
  • Ses signaux audio spécifiques
  • Ses vibrations dédiées
  • Ses informations contextuelles

🔧 Fonctionnalités avancées

Minuteur intelligent

  • Détection automatique des phases
  • Progression fluide entre rounds
  • Gestion des cas particuliers (pas de repos après le dernier round)
  • Calculs de progression en temps réel

Interface adaptative

  • Couleurs dynamiques selon la phase
  • Animations conditionnelles
  • Feedback visuel instantané
  • Messages contextuels

Persistance des données

  • Sauvegarde automatique
  • Récupération d'erreurs
  • Validation des données
  • Historique des modifications

🚀 Utilisation

  1. Créer un entraînement : Appuyer sur le bouton + depuis l'accueil
  2. Configurer les phases : Définir échauffement, rounds et récupération
  3. Démarrer l'entraînement : Appuyer sur une carte d'entraînement
  4. Utiliser les contrôles : Start/Pause/Reset/Skip selon vos besoins
  5. Suivre la progression : Visualiser l'avancement en temps réel

🎨 Personnalisation

L'application utilise Material Design 3 avec :

  • Couleur primaire : Rouge (thème boxe)
  • Thème adaptatif selon le système
  • Couleurs contextuelles par phase
  • Animations fluides et cohérentes

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.

🤝 Contribution

Les contributions sont bienvenues ! N'hésitez pas à :

  • Signaler des bugs
  • Proposer des améliorations
  • Ajouter de nouvelles fonctionnalités
  • Améliorer la documentation

📞 Support

Pour toute question ou problème, veuillez créer une issue sur le repository GitHub.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors