Application Progressive Web App (PWA) dédiée au suivi de performance en force athlétique et musculation.
IronTracker est conçu pour remplacer le carnet papier et les tableurs complexes. L'application privilégie la rapidité d'exécution en salle, l'autonomie des données (Local-First) et une interface utilisateur minimaliste optimisée pour les environnements sombres.
- Mode Session Active : Interface optimisée pour la saisie rapide des séries, répétitions, charges et RPE (Rate of Perceived Exertion).
- Chronomètre de Repos Intelligent : Système d'overlay global permettant de naviguer dans l'application tout en gardant un œil sur le temps de repos.
- Calculateur de Plaques : Outil intégré pour calculer instantanément la répartition des disques sur la barre.
- Échauffement Automatique : Génération intelligente de séries de montée en gamme (Warm-up) basées sur la charge de travail historique.
- Feedback Immédiat : Comparaison en temps réel avec les performances de la séance précédente (Volume, 1RM estimé) via des indicateurs de tendance.
- Éditeur de Programmes : Création et modification complète de routines d'entraînement (Split, Full Body, PPL).
- Système de Session : Organisation des exercices, définition des temps de repos cibles et des objectifs de RIR (Reps in Reserve).
- Duplication : Fonctionnalité de clonage pour créer rapidement des variantes de programmes existants.
- Prévisualisation : Consultation du contenu d'une séance avant son lancement.
- Base de Données Complète : Plus de 80 exercices pré-configurés incluant des instructions techniques (Setup, Exécution, Erreurs à éviter).
- Catégorisation Avancée : Filtrage par groupe musculaire, type d'exercice (Polyarticulaire, Isolation, Cardio, Statique) et équipement.
- Personnalisation : Possibilité d'ajouter, de modifier, de mettre en favori et d'archiver des exercices personnalisés.
- Tableau de Bord (Dashboard) : Vue d'ensemble de l'activité hebdomadaire avec graphiques de volume et suggestions intelligentes de séance (Smart Start).
- Standards de Force (SBD) : Radar de performance comparant les max estimés (Squat, Bench, Deadlift) aux standards de force internationaux relatifs au poids de corps.
- Graphiques de Progression : Visualisation de l'évolution du 1RM estimé, du volume et du tonnage sur différentes périodes (7, 30, 90 jours).
- Analyse de Répartition : Diagrammes circulaires et histogrammes pour analyser l'équilibre musculaire et l'utilisation du matériel.
- History Hub : Centralisation des journaux d'entraînement avec une vue calendrier interactive et des indicateurs visuels de fatigue.
- Notes de Séance : Système d'annotation contextuelle pour le suivi qualitatif.
- Souveraineté des Données : Export complet des données au format JSON (Backup) et CSV (compatible Excel/Tableurs).
- Offline-First : Fonctionnalité complète sans connexion internet grâce au Service Worker.
- Performance : Utilisation de la virtualisation pour l'affichage fluide des longues listes (Historique, Bibliothèque).
- Stockage Optimisé : Compression des données via LZ-String pour maximiser l'espace de stockage local.
- Haptique : Retours sensoriels (vibrations) lors des interactions clés et de la fin des minuteries.
L'architecture technique privilégie la performance instantanée et la robustesse.
- Framework : React 18 + Vite
- Langage : TypeScript
- Gestion d'État : Zustand
- Styling : TailwindCSS
- Visualisation : Recharts
- Persistance : LocalStorage + LZ-String
Le code suit une architecture modulaire par fonctionnalités ("Feature-Based") :
core/: Logique métier agnostique, types, constantes et utilitaires purs.features/: Modules autonomes (Dashboard, Workout, Analytics, History...) contenant leurs propres composants et hooks.components/: Bibliothèque de composants UI réutilisables.services/: Couches d'abstraction pour le stockage et l'indexation.
Pour exécuter le projet localement :
-
Cloner le dépôt :
git clone https://github.com/votre-username/irontracker.git
-
Installer les dépendances :
npm install
-
Lancer le serveur de développement :
npm run dev
-
Construire pour la production :
npm run build