Initial vault setup
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
---
|
||||
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
|
||||
Reference in New Issue
Block a user