--- 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é) ```yaml # 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: ``` ```bash # Démarrage docker compose up -d # Migrations Prisma (premier lancement) docker compose exec app npx prisma migrate deploy ``` ### Installation manuelle (développement) 1. **Pré-requis** : Node.js 18+, pnpm 8+, PostgreSQL 14+ (ou via `docker compose up postgres`). 2. **Cloner** : `git clone https://github.com/Snouzy/workout-cool && cd workout-cool`. 3. **Deps** : `pnpm install`. 4. **Env** : `cp .env.example .env` puis ajuster `DATABASE_URL`, `BETTER_AUTH_SECRET`, etc. 5. **DB** : `createdb -h localhost -U postgres workout_cool` puis `npx prisma migrate dev`. 6. **Seed (optionnel)** : `npx prisma db seed` pour données de démo. 7. **Dev** : `pnpm dev` → http://localhost:3000. 8. **Import CSV** : `pnpm run import:exercises-full ./data/sample-exercises.csv` pour 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_cool` quotidien + 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_SECRET` doit ê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_dump` quotidien, tester le restore régulièrement. - **MIT** : permissive, permet fork commercial (mais respecter la marque Workout.cool). - **Migrations Prisma** : toujours via `migrate deploy` en prod, jamais `db 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é