BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
Create free workout routines with our comprehensive exercise database. Track your progress and achieve your fitness goals. 🏋️
Translation pending
Sports & fitnessTypeScript · JavaScriptGitHub @Peptideos-workoutOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
workout hub
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Workout.cool
Modern fitness coaching platform with comprehensive exercise database
They are helping making workout.cool free and open-source for everyone :
A comprehensive fitness coaching platform that allows create workout plans for you, track progress, and access a vast exercise database with
detailed instructions and video demonstrations.
This project was born from a personal mission to revive and improve upon a previous fitness platform. As the primary contributor to the
original workout.lol project, I witnessed its journey and abandonment. 🥹Read the full README ↗A comprehensive fitness coaching platform that allows create workout plans for you, track progress, and access a vast exercise database with detailed instructions and video demonstrations.
This project was born from a personal mission to revive and improve upon a previous fitness platform. As the primary contributor to the original workout.lol project, I witnessed its journey and abandonment. 🥹
Someone had to step up.
The opensource fitness community deserves better than broken promises and abandoned platforms.
I'm not building this for profit.
This isn't just a revival : it's an evolution. workout.cool represents everything the original project could have been, with the reliability, modern approach, and maintenance that the fitness open source community deserves.
I'm not just a developer : I'm a user who refused to let our community down.
I experienced firsthand the frustration of watching a beloved tool slowly disappear. Like many of you, I had workouts saved, progress tracked, and a routine built around the platform.
If you were part of the original workout.lol community, welcome back! If you're new here, welcome to the future of fitness platform management.
Clone the repository
git clone https://github.com/Snouzy/workout-cool.git
cd workout-cool
Choose your installation method:
Copy environment variables
cp .env.example .env
Start everything for development:
make dev
make downOpen your browser Navigate to http://localhost:3000
Install dependencies
pnpm install
Copy environment variables
cp .env.example .env
Set up PostgreSQL database
workout_cool : createdb -h localhost -p 5432 -U postgres workout_coolRun database migrations
npx prisma migrate dev
Seed the database (optional)
See the - Exercise database import section
Start the development server
pnpm dev
Open your browser Navigate to http://localhost:3000
The project includes a comprehensive exercise database. To import a sample of exercises:
Your CSV should have these columns:
id,name,name_en,description,description_en,full_video_url,full_video_image_url,introduction,introduction_en,slug,slug_en,attribute_name,attribute_value
You can use the provided example.
# Import exercises from a CSV file
pnpm run import:exercises-full /path/to/your/exercises.csv
# Example with the provided sample data
pnpm run import:exercises-full ./data/sample-exercises.csv
id,name,name_en,description,description_en,full_video_url,full_video_image_url,introduction,introduction_en,slug,slug_en,attribute_name,attribute_value
157,"Fentes arrières à la barre","Barbell Reverse Lunges","<p>Stand upright...</p>","<p>Stand upright...</p>",https://youtube.com/...,https://img.youtube.com/...,slug-fr,slug-en,TYPE,STRENGTH
157,"Fentes arrières à la barre","Barbell Reverse Lunges","<p>Stand upright...</p>","<p>Stand upright...</p>",https://youtube.com/...,https://img.youtube.com/...,slug-fr,slug-en,PRIMARY_MUSCLE,QUADRICEPS
Want unlimited exercise for local development ?
Just ask chatGPT with the prompt from ./scripts/import-exercises-with-attributes.prompt.md
This project follows Feature-Sliced Design (FSD) principles with Next.js App Router:
src/
├── app/ # Next.js pages, routes and layouts
├── processes/ # Business flows (multi-feature)
├── widgets/ # Composable UI with logic (Sidebar, Header)
├── features/ # Business units (auth, exercise-management)
├── entities/ # Domain entities (user, exercise, workout)
├── shared/ # Shared code (UI, lib, config, types)
└── styles/ # Global CSS, themes
shared → entities → features → widgets → appfeatures/
└── exercise-management/
├── ui/ # UI components (ExerciseForm, ExerciseCard)
├── model/ # Hooks, state management (useExercises)
├── lib/ # Utilities (exercise-helpers)
└── api/ # Server actions or API calls
We welcome contributions! Please see our Contributing Guide for details.
git checkout -b feature/amazing-feature)git commit -m 'feat: add amazing feature')git push origin feature/amazing-feature)pnpm test:embed-iframe opens a parent page on another localhost origin and frames /en/?embed=1 and /en?embed=1 with no cookie. It expects the signed-out embed document, and it expects the workout builder not to render. Run pnpm build first, then pnpm exec playwright install chromium if the browser is not installed yet.
The script's forwarder is the only place a localhost parent is added to frame-ancestors, and that change stays in the test process. Production CSP is still frame-ancestors 'self' https://peptideos.us https://www.peptideos.us. CI runs this after the production build, with pnpm exec playwright install --with-deps chromium.
📋 For complete contribution guidelines, see our Contributing Guide
📖 For detailed self-hosting instructions, see our Complete Self-hosting Guide
📺 You can also watch a 3-minute video guide on self-hosting Workout.Cool.
To seed the database with the sample exercises, set the SEED_SAMPLE_DATA env variable to true.
# Build the Docker image
docker build -t yourusername/workout-cool .
# Run the container
docker run -p 3000:3000 --env-file .env.production yourusername/workout-cool
Update the host to point to the postgres service instead of localhost
DATABASE_URL=postgresql://username:password@postgres:5432/workout_cool
docker compose up -d
# Build the application
pnpm build
# Run database migrations
export DATABASE_URL="your-production-db-url"
npx prisma migrate deploy
# Start the production server
pnpm start
This project is licensed under the MIT License. See the LICENSE file for details.
This is about rebuilding what we lost, together.
Appear in the README and on the website as supporter by donating: