Skip to content

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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages