Frontend Svelte/Vite pour l'application MyPacer - Calculateur de tables d'allure et recherche d'athlètes FFA
MyPacer Web est une application Svelte qui permet aux coureurs de :
- Afficher des tables d'allure personnalisées pour différentes distances
- Rechercher des athlètes dans la base de données de la Fédération Française d'Athlétisme (FFA)
- Afficher les records personnels des athlètes directement dans le tableau d'allure
- Ajouter des distances personnalisées en plus des distances standards
L'application communique avec une API FastAPI (mypacer_api) qui gère la logique métier et l'accès aux données.
- Sélection de la plage d'allure (min/max)
- Incrément configurable
- Distances standards (100m, 200m, 400m, 800m, 1000m, 1500m, mile, 3000m, 5km, 10km, semi, marathon)
- Ajout/suppression de distances personnalisées
- Affichage en temps, vitesse et allure
- Affichage d'une colonne de pourcentage VMA
- Recherche par nom dans la base de données FFA
- Visualisation des records personnels
- Affichage des records dans le tableau d'allure avec code couleur
- Gestion de plusieurs athlètes simultanément
- Lien direct vers la fiche FFA de l'athlète
- Interface adaptée desktop et mobile
- Navigation tactile optimisée
# Installation des dépendances
npm install
# Lancement du serveur de développement
npm run devL'application sera accessible sur http://localhost:5173
Note : Assurez-vous que l'API (mypacer_api) tourne sur http://localhost:8000 ou modifiez VITE_API_URL dans .env
# Lancement avec docker-compose
docker compose -f docker-compose.dev.yml up
# Ou avec make
make devVoir docs/DOCKER_DEV_SETUP.md pour la documentation complète.
# Tests unitaires
npm run test
# Tests avec UI interactive
npm run test:ui
# Tests avec coverage
npm run coverage
# Ou via Makefile
make test
make coverage- 45.8% lignes
- 77.96% fonctions
- 104 tests passent
Modules testés à 100% :
- ✅
athletesStore.js(gestion des athlètes) - ✅
paceTableStore.js(gestion de la table d'allure) - ✅
vmaStore.js(gestion VMA) - ✅
worldRecordsStore.js - ✅
storeUtils.js(utilitaires stores + localStorage) - ✅
timeUtils.js(formatage temps/allure/vitesse) - ✅
flagsUtils.js(conversion codes pays)
# Vérifier le code
make lint # ESLint
make format-check # Prettier
# Auto-fix
make format # Formatter le code
make fix # Fix linting issues
# Simulation CI locale
make ci # Format + Lint + Tests + BuildProduction :
docker pull ghcr.io/cmoron/mypacer_web:latest-prodTags disponibles :
latest-prod- Dernière version stablevX.Y.Z-prod- Versions spécifiquesmain-sha123- Commits sur main
# Image de production
docker build --target prod -t mypacer_web:prod .
# Image de développement
docker build --target dev -t mypacer_web:dev .Développement :
docker compose -f docker-compose.dev.yml upProduction (via mypacer_infra) :
# Voir https://github.com/cmoron/mypacer_inframypacer_web/
├── src/
│ ├── athletes/ # Recherche et gestion des athlètes
│ │ ├── AthleteSearch.svelte
│ │ └── athletesStore.js
│ ├── paceTable/ # Table d'allure principale
│ │ ├── PaceTable.svelte
│ │ ├── paceTableStore.js
│ │ └── vmaStore.js
│ ├── utils/ # Fonctions utilitaires
│ │ ├── timeUtils.js # Formatage temps/allure
│ │ ├── flagsUtils.js # Drapeaux pays
│ │ ├── storeUtils.js # LocalStorage helpers
│ │ └── constants.js
│ └── App.svelte # Composant racine
├── tests/ # Tests Vitest
│ ├── stores/ # Tests des stores Svelte
│ └── utils/ # Tests des utilitaires
├── docs/ # Documentation
│ └── DOCKER_DEV_SETUP.md
├── Dockerfile # Multi-stage (dev + prod)
├── docker-compose.dev.yml # Dev local avec hot-reload
├── Makefile # Commandes standardisées
└── vitest.config.js # Configuration tests
Développement (.env) :
VITE_API_URL=http://localhost:8000Production (.env.production) :
VITE_API_URL=/apiBuild Docker :
docker build --build-arg VITE_API_URL=https://api.mypacer.fr .- Docker Development Setup - Configuration Docker dev/prod
- API Documentation - Backend FastAPI
- Infrastructure - Orchestration Docker Compose
CI (ci.yml) - Sur push/PR vers main :
- ✅ Format check (Prettier)
- ✅ Linting (ESLint)
- ✅ Tests (104 tests)
- ✅ Coverage (45.8%)
- ✅ Build (Vite)
Docker (docker.yml) :
- Sur push
main: Build + Push image GHCR - Sur tag
v*: Build + Push + Release GitHub automatique
make help # Afficher l'aide
make install # npm ci
make test # Tests unitaires
make coverage # Tests avec coverage
make lint # ESLint
make format # Prettier --write
make format-check # Prettier --check
make ci # Simulation CI locale
make clean # Nettoyage- Fork le projet
- Créer une branche (
git checkout -b feature/AmazingFeature) - Commit les changements (
git commit -m 'feat: add amazing feature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrir une Pull Request
Note : Assurez-vous que make ci passe avant de créer une PR.
MyPacer est composé de 3 microservices :
- mypacer_web (ce repo) - Frontend Svelte
- mypacer_api - Backend FastAPI
- mypacer_scraper - Scraper données FFA
Orchestration via mypacer_infra (Docker Compose + Nginx)
Distributed under the MIT License. See LICENSE for more information.
- Svelte - Framework réactif
- Vite - Build tool
- Vitest - Testing framework
- Prettier - Code formatter
- flag-icons - Drapeaux CSS