5.2 KiB
title: SparkyFitness created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, fitness, nutrition, tracker, typescript, react, node] confidence: high contested: false sources: [https://selfh.st/apps/?tag=fitness, https://github.com/CodeWithCJ/SparkyFitness]
SparkyFitness ⚡
Application web complète de suivi fitness, nutrition et santé pour la famille, écrite en TypeScript/React et Node.js, avec interface moderne et support multi-utilisateurs.
| Métadonnée | Valeur |
|---|---|
| Site web | https://sparkyfitness.com/ |
| GitHub | https://github.com/CodeWithCJ/SparkyFitness |
| License | MIT |
| Langage | TypeScript (React + Node.js) |
| Étoiles | ⭐205 (selfh.st rank) |
| Dernière MAJ | 2026-05-30 |
| Catégorie | cat-fitness |
Description
SparkyFitness (anciennement SparkyRecipes puis renommé pour englober le fitness) est une application web moderne et auto-hébergeable qui combine suivi nutritionnel, entraînement et mesures de santé dans une seule interface cohérente. Pensée pour un usage familial ou de petit coach, elle permet à plusieurs utilisateurs de partager le même déploiement tout en gardant leurs données isolées.
Côté fonctionnalités, SparkyFitness propose un journal alimentaire avec gestion des recettes composées (cumul nutritionnel automatique), un tracker d'exercices avec bibliothèque d'activités, un suivi du poids et des mesures corporelles avec graphiques d'évolution, un planificateur de repas hebdo, et un tableau de bord synthétisant calories, macros et activité. L'UI en React avec TailwindCSS est particulièrement soignée comparée à app-wger qui est plus daté visuellement.
L'architecture client/serveur sépare clairement le frontend (Vite + React 18) du backend (Node.js + Express + PostgreSQL). Une API REST documentée permet l'intégration avec des wearables ou des automatisations. Le projet est encore jeune (release v1.x) mais le rythme de commit est soutenu et la documentation est claire.
Installation
Via Docker Compose
services:
sparkyfitness-db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: sparky
POSTGRES_PASSWORD: ${SPARKY_DB_PASSWORD:-changeme}
POSTGRES_DB: sparkyfitness
volumes:
- sparky_db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U sparky"]
interval: 10s
timeout: 5s
retries: 5
sparkyfitness-backend:
image: codewithcj/sparkyfitness:latest
restart: unless-stopped
depends_on:
sparkyfitness-db:
condition: service_healthy
environment:
DATABASE_URL: postgres://sparky:${SPARKY_DB_PASSWORD:-changeme}@sparkyfitness-db:5432/sparkyfitness
JWT_SECRET: ${SPARKY_JWT_SECRET:-changez-moi}
NODE_ENV: production
PORT: 3001
ports:
- "3001:3001"
sparkyfitness-frontend:
image: codewithcj/sparkyfitness-frontend:latest
restart: unless-stopped
depends_on:
- sparkyfitness-backend
environment:
VITE_API_URL: http://localhost:3001
ports:
- "3000:80"
volumes:
sparky_db:
Installation manuelle (Debian/Ubuntu)
sudo apt install -y postgresql nodejs npm git
git clone https://github.com/CodeWithCJ/SparkyFitness.git
cd SparkyFitness
# Backend
cd backend && npm install && npm run build
# Frontend
cd ../frontend && npm install && npm run build
Configuration
Les variables d'environnement principales du backend :
DATABASE_URL: connexion PostgreSQLJWT_SECRET: secret pour l'authentification JWT (32+ caractères)PORT: port d'écoute (défaut 3001)
À la première connexion, créer un compte administrateur via l'interface web. Les utilisateurs supplémentaires sont gérables depuis l'admin. Les recettes composées se créent depuis l'onglet « Recettes » et permettent d'agréger automatiquement les valeurs nutritionnelles.
Alternatives
Open source :
- app-wger : référence plus mature, Python/Django, plus austère
- app-fittrackee : français, focus activité sportive pure
- app-workout-cool : TypeScript, plus simple, sans nutrition
- app-endurain : si focus cyclisme/course type Strava
Propriétaire :
- MyFitnessPal : leader mondial, base alimentaire géante, payant premium
- Cronometer : précision nutritionnelle, freemium
- Yazio : interface moderne, freemium agressif
Sécurité
- Changer absolument
SPARKY_DB_PASSWORDetSPARKY_JWT_SECRETavant déploiement - Mettre en place un reverse proxy (Traefik, Nginx Proxy Manager) avec HTTPS (Let's Encrypt)
- Sauvegarder régulièrement le volume
sparky_db(pg_dumpquotidien) - Les mots de passe sont hashés côté serveur (bcrypt par défaut)
Ressources
- GitHub : https://github.com/CodeWithCJ/SparkyFitness
- Site officiel : https://sparkyfitness.com/
- Issue tracker : https://github.com/CodeWithCJ/SparkyFitness/issues
- selfh.st : https://selfh.st/apps/?tag=fitness
Pages Liées
- cat-fitness
- recettes-docker-compose
- app-wger — alternative mature Python
- app-workout-cool — autre tracker TypeScript
- app-fittrackee — tracker d'activités français