138 lines
5.2 KiB
Markdown
138 lines
5.2 KiB
Markdown
---
|
|
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
|
|
|
|
```yaml
|
|
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)
|
|
|
|
```bash
|
|
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 PostgreSQL
|
|
- `JWT_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_PASSWORD` et `SPARKY_JWT_SECRET` avant 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_dump` quotidien)
|
|
- 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
|