6.9 KiB
title: Workout.cool created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, fitness, workout, coaching, typescript, nextjs, prisma] confidence: high contested: false sources: [https://selfh.st/apps/?tag=fitness, https://github.com/Snouzy/workout-cool, https://workout.cool/]
Workout.cool 🏋️
Plateforme moderne de coaching fitness open source (TypeScript/Next.js) — création de programmes d'entraînement personnalisés, suivi de progression et base de données d'exercices avec vidéos. Successeur communautaire de workout.lol.
| Métadonnée | Valeur |
|---|---|
| Site web | https://workout.cool/ |
| GitHub | https://github.com/Snouzy/workout-cool |
| License | MIT |
| Langage | TypeScript (Next.js, React, Prisma) |
| Étoiles | ⭐7.9k (GitHub) / ⭐665 (selfh.st rank) |
| Dernière MAJ | 2025-12-07 (v1.3.2) |
| Catégorie | cat-fitness |
Description
Workout.cool est une plateforme de coaching fitness open source moderne, écrite en TypeScript avec Next.js (App Router), Prisma et PostgreSQL. Le projet est né de la volonté de son créateur (Snouzy / Mat B.) de proposer une ré-implémentation communautaire de workout.lol, après l'abandon du projet originel suite à des problèmes de licence de vidéos d'exercices. La devise : « I'm not building this for profit. This isn't just a revival: it's an evolution. »
L'application permet de créer des plans d'entraînement personnalisés, d'accéder à une base de données d'exercices détaillée (avec descriptions multilingues, vidéos YouTube, attributs muscles/équipement), de suivre sa progression via des graphiques (Recharts), et offre un système d'authentification moderne (Better Auth) avec support natif mobile via Expo. L'architecture suit le pattern Feature-Sliced Design (FSD) : app/ → processes/ → widgets/ → features/ → entities/ → shared/.
Côté monétisation, le projet intègre RevenueCat pour les abonnements premium (coachs Pro, statistiques avancées), mais le code reste 100% open source et self-hostable. Les thèmes UI utilisent Tailwind CSS + shadcn/ui + Radix UI pour un rendu moderne et accessible. L'import d'exercices se fait par CSV avec un script fourni, et un prompt ChatGPT est même fourni pour générer des datasets d'exercices à partir de zéro.
Installation
Via Docker (recommandé)
# docker-compose.yml
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: workout
POSTGRES_PASSWORD: workout-secret
POSTGRES_DB: workout_cool
volumes:
- workout-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U workout"]
interval: 10s
timeout: 5s
retries: 5
app:
build:
context: https://github.com/Snouzy/workout-cool.git
dockerfile: Dockerfile
container_name: workout-cool
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://workout:workout-secret@postgres:5432/workout_cool
BETTER_AUTH_SECRET: change-me-with-openssl-rand-32
BETTER_AUTH_URL: https://workout.example.com
NEXT_PUBLIC_APP_URL: https://workout.example.com
NODE_ENV: production
volumes:
workout-db:
# Démarrage
docker compose up -d
# Migrations Prisma (premier lancement)
docker compose exec app npx prisma migrate deploy
Installation manuelle (développement)
- Pré-requis : Node.js 18+, pnpm 8+, PostgreSQL 14+ (ou via
docker compose up postgres). - Cloner :
git clone https://github.com/Snouzy/workout-cool && cd workout-cool. - Deps :
pnpm install. - Env :
cp .env.example .envpuis ajusterDATABASE_URL,BETTER_AUTH_SECRET, etc. - DB :
createdb -h localhost -U postgres workout_coolpuisnpx prisma migrate dev. - Seed (optionnel) :
npx prisma db seedpour données de démo. - Dev :
pnpm dev→ http://localhost:3000. - Import CSV :
pnpm run import:exercises-full ./data/sample-exercises.csvpour charger des exercices.
Configuration
- Auth : Better Auth supporte email/password, OAuth (Google, GitHub), et mobile via Expo.
- Base d'exercices : importer via CSV (colonnes : id, name, name_en, description, full_video_url, full_video_image_url, etc.).
- Programmes : créer des templates d'entraînement, planifier sur le calendrier.
- Thème : dark/light natif, customisable via Tailwind.
- Mobile : l'app Expo pointe vers le même backend (variables
EXPO_PUBLIC_*). - HTTPS obligatoire via reverse proxy.
- Backups :
pg_dump workout_coolquotidien + rotation hors-ligne. - Migrations :
npx prisma migrate deployà chaque release.
Alternatives
Open Source
- app-wger — Workout manager Python/Django (plus mature)
- app-sparkyfitness — Fitness + nutrition + IA (famille)
- app-workout-tracker — Tracker GPX + musculation (Go)
- app-wingfit — Fitness minimaliste (Angular + FastAPI)
- FitTrackee — Tracker outdoor Python
- Hevy clone — projets dérivés de workout.lol
Propriétaires
- Strong (iOS/Android) — app muscu fluide, 10$/mois premium
- Hevy — moderne, social, 10$/mois
- JEFIT — routines muscu avec bibliothèque
- Freeletics — coaching IA, 30$/mois
- Fitbod — programmes adaptatifs IA
- Nike Training Club — gratuit, plans Nike
Sécurité
- Better Auth : bibliothèque moderne, support MFA, OAuth, passkeys (TOTP 2FA possible).
- HTTPS obligatoire via reverse proxy (Traefik/Caddy).
- JWT secrets :
BETTER_AUTH_SECRETdoit être long et rotaté (32+ caractères). - CSRF/XSS : protégés par Next.js Server Components.
- Uploads : pas d'upload d'image utilisateur direct (URLs YouTube uniquement) → surface d'attaque réduite.
- Rate limiting : à configurer au niveau reverse proxy.
- Backups :
pg_dumpquotidien, tester le restore régulièrement. - MIT : permissive, permet fork commercial (mais respecter la marque Workout.cool).
- Migrations Prisma : toujours via
migrate deployen prod, jamaisdb push.
Ressources
- Site officiel : https://workout.cool/
- Code source : https://github.com/Snouzy/workout-cool
- Documentation : https://workout.cool/docs (à venir)
- Démo live : https://workout.cool/
- Discord communautaire : https://discord.gg/workout-cool
- selfh.st : https://selfh.st/apps/?tag=fitness
- TrueNAS SCALE app : https://github.com/Snouzy/workout-cool/issues/184 (en cours)
Pages Liées
- cat-fitness — Catégorie parente
- app-wger — Alternative Python plus mature
- app-sparkyfitness — Alternative avec nutrition
- app-workout-tracker — Alternative Go simple
- app-wingfit — Alternative FR minimaliste
- recettes-docker-compose — Templates de déploiement
- securisation-home-lab — Bonnes pratiques sécurité