Files
wiki/Catalogue-Self-Hosted/apps/app-workout-cool.md
T
2026-06-09 18:40:21 +02:00

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)

  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 devhttp://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

Pages Liées