Workout Challenge
Workout Challenge gives you workout challenges for friends and colleagues on your own infrastructure.
A privacy-first group fitness tracker, honestly reviewed. Built by one developer in London, runs on your own server.
TL;DR
- What it is: A self-hosted web app for running fitness competitions with friends — tracking workouts, awarding points, and building leaderboards across Apple, Android, and Garmin devices [README].
- Who it’s for: Small groups (office teams, friend circles) who want a “close your rings”-style challenge without sharing health data with a third-party SaaS or paying monthly for premium wearable features [README].
- Cost savings: Strava’s premium tier runs $7.99–$11.99/mo per person. Most group challenge apps either upsell subscriptions or lock features behind premium tiers. Workout Challenge self-hosted runs on a $5–10/mo VPS, shared across however many participants you invite [README].
- Key strength: Flexible metrics and point-cap logic that keeps competitions fair between a casual walker and a marathon runner. You can set per-workout, per-day, and per-week minimums and maximums to reward consistency over raw output [README].
- Key weakness: 142 GitHub stars, 7 forks — this is a solo developer project with no commercial backing, no public roadmap, and an unrecognized license. There are zero independent third-party reviews of the software. You’re betting on one developer’s continued interest [README].
What is Workout Challenge
Workout Challenge is a Django-based web application built by a single developer (vanalmsick) out of London. The pitch is simple: create a custom fitness competition, invite friends via a link, track workouts manually or sync automatically via Strava, and watch a shared leaderboard update in real time [README].
The tool solves a specific, real problem. Group fitness challenges are genuinely useful for motivation — office step challenges, January streaks, friend bets about hitting 10km-per-week. The commercial solutions for this are either tied to specific hardware ecosystems (Apple Fitness+ challenges, Garmin Connect), locked to Strava’s premium tier, or require everyone in the group to use the same app or device. Workout Challenge is device-agnostic by design: Apple Watch, Garmin, Android wearable, or just typing in your run manually — all treated the same [README].
The scoring system is worth calling out because it’s not obvious from the name. Participants earn 1 point for every 1% progress toward a competition goal. Set a goal of 100 minutes of exercise per week, do 50 minutes, earn 50 points. This means absolute numbers don’t win — consistency and percentage completion do. Combined with the cap/floor logic (you can set max points per workout so one ultramarathon doesn’t lap everyone else for the month), the system is specifically designed to keep casual participants competitive against serious athletes [README].
The project has 142 stars and 7 forks as of this review — small by open-source standards, but the feature set described in the README is coherent and finished-feeling rather than abandoned-feeling.
Why People Choose It
No independent third-party software reviews of Workout Challenge exist in public search results. The five sources provided with this review are general fitness content unrelated to this specific software [1][2][3][4][5]. What follows is based entirely on the README and repository structure.
The practical case for choosing it over alternatives comes down to three things:
Privacy. The README leads with it: “compete with friends and co-workers across devices using the metrics you want to use respecting your privacy.” Every workout you log — runs, cycling, gym sessions — stays on your own server. Nothing goes to a wearables company, a fitness SaaS, or an ad network. If you connect Strava, the Strava sync runs daily at 4 AM through your own deployment, not through a middleman [README].
Device neutrality. The commercial competition landscape is fragmented. Apple challenges only work between Apple Watch users. Garmin Connect requires Garmin hardware. Strava clubs require Strava (and full features need Strava Premium at $7.99–$11.99/mo). Workout Challenge accepts manual entry as a first-class input, meaning participants without smart devices — or with incompatible devices — aren’t second-class citizens [README].
Fair competition design. The point-cap mechanics are the feature that actually differentiates this from a shared spreadsheet. Limiting max points per workout prevents cherry-picking; setting floors prevents gaming inactivity. This is thoughtful product design for a specific use case, not just a leaderboard wrapper [README].
Features
Based on the README and repository structure:
Competition management:
- Create competitions with custom names and invite via link [README]
- Multiple simultaneous competitions supported [README]
- Customizable goal types: time (minutes), count (#), distance (km), calories (kcal), kilojoules (kj) [README]
- Goal periods: per day / per week / per month / entire competition duration [README]
- Point limits: min/max per workout, min/max per day, min/max per week [README]
- Create multiple goals per competition [README]
Workout tracking:
- Manual workout entry [README]
- Automatic import via Strava (daily sync at 4 AM) [README]
- Personal dashboard: workout stats and workout streak [README]
- Competition dashboard: friends’ workouts, leaderboard, progress toward goals [README]
Notifications and communication:
- Weekly Monday email with leaderboard standings [README]
- Optional Thursday email with personal goal progress [README]
- Fully responsive emails and website (mobile, tablet, desktop) [README]
Infrastructure:
- Docker single-command quick start:
docker run -p 80:80 -e ALLOW_ALL_HOSTS=true vanalmsick/workout_challenge[README] - Docker Compose production setup with PostgreSQL, Celery (task queue), Supervisord, nginx [README]
- OpenAI API key supported as an environment variable (use unclear from README) [README]
- Sentry error monitoring integration [README]
- Light and dark mode [README]
- SQLite available; PostgreSQL recommended for production [README]
Pricing: SaaS vs Self-Hosted Math
Workout Challenge: Open-source, no SaaS tier. The only cost is the VPS you run it on.
| Option | Monthly Cost | Notes |
|---|---|---|
| Self-hosted (Hetzner CX22) | ~$4–6 | Enough for a small group |
| Self-hosted (Contabo) | ~$5–8 | More RAM, good for reliability |
| Strava Premium (per person) | $7.99–11.99 | Just for Strava, not group challenges |
| Garmin Connect subscription | $6.99 | Garmin devices only |
Savings math for a 10-person office challenge:
If everyone chips in $8/mo for Strava Premium to use group challenges, that’s $80/mo for the team, $960/year — and you’re still locked into Strava’s feature set and device ecosystem. Self-hosted Workout Challenge on a shared VPS costs $5–8/mo total for the server. The only currency spent beyond that is the one-time setup time.
This math gets more compelling as group size grows: adding a 20th participant to Workout Challenge costs nothing. On per-seat SaaS, it costs another $8–12/mo.
Deployment Reality Check
Quick start (five minutes):
docker run -p 80:80 -e ALLOW_ALL_HOSTS=true vanalmsick/workout_challenge
That command pulls the public Docker image and runs the app with SQLite for local testing. For a production deployment, the docker-compose file adds PostgreSQL and configures the full stack.
What you actually need for production:
- Linux VPS (2GB RAM minimum based on the stack: Django + Celery + PostgreSQL + Redis + nginx + Supervisord)
- Docker and docker-compose
- A domain name and SSL (not bundled — you’ll add Caddy or nginx with Let’s Encrypt separately)
- SMTP credentials for weekly email reports
- Strava API credentials if you want automatic import (requires creating a Strava API app — free but takes 10 minutes of setup)
What the docker-compose exposes: The default configuration exposes four ports: 80 (the app), 5555 (Celery Flower monitoring), 9001 (Supervisord monitoring), and 8000 (Django admin). The README explicitly says ports 5555, 9001, and 8000 should not be exposed to the public internet — only the app port (80) should be public [README]. If you’re new to Docker networking, this is something to pay attention to.
Realistic time estimates:
- Technical user with Docker experience: 30–60 minutes to production including domain and SSL.
- Non-technical user following a guide: 2–4 hours, and you’ll need to find a guide since this project doesn’t provide a beginner deployment walkthrough.
What can go sideways:
- No managed cloud option — if the VPS goes down or the deployment breaks, there’s no fallback. You’re the ops team.
- 25 total commits in the repository as of this review. The project is early-stage or slow-moving. There’s no changelog, no issue tracker history to gauge responsiveness, no public roadmap [README].
- The LICENSE field in GitHub metadata shows “NOASSERTION” — meaning the license couldn’t be automatically identified. There is a LICENSE file in the repo, but if you’re deploying for a corporate environment where license compliance matters, verify it manually before proceeding [README].
- The OpenAI API key environment variable is listed in the docker-compose but not explained in the README. It’s unclear what AI feature it powers, if any [README].
Pros and Cons
Pros
- Device-agnostic. Works for Apple Watch, Garmin, Android wearables, or no wearable at all — manual entry is a first-class feature. Most competitors require everyone to be on the same ecosystem [README].
- Genuinely fair competition mechanics. Point caps and floors are a thoughtful solution to the “one ultra-fit person dominates the whole challenge” problem. Rewards consistency over raw output [README].
- Single Docker command to try it. The quick-start is as low-friction as self-hosted gets. No complicated multi-step setup to evaluate whether this is worth running [README].
- Privacy-first architecture. All workout data stays on your server. Strava sync runs in your deployment, not through any third-party service [README].
- Flexible competition metrics. Time, distance, calories, kilojoules, count — and you can combine multiple goals per competition. A competition can simultaneously track “run 5 times per week” AND “200 km this month” [README].
- No per-seat costs. Scale the group from 5 to 50 participants for the same $5–8/mo VPS bill [README].
Cons
- Solo developer project, 142 stars. No commercial backing, no team, no public issue tracker activity visible in the scraped data. If the developer loses interest, the project is effectively abandoned. There is no community to pick it up [README].
- Unidentified license. “NOASSERTION” in GitHub metadata means the license type isn’t a recognized open-source standard. Check the LICENSE file before deploying in any commercial or corporate context [README].
- No independent reviews exist. There is no public written evaluation of this software from anyone other than the author. You’re making a deployment decision with zero social proof.
- No managed cloud option. If you want this without server management, the answer is “you can’t.” There’s no hosted tier, no one-click deployment on Railway or Render documented, no paid support channel [README].
- Unclear AI feature. The OpenAI API key in the docker-compose suggests an AI integration, but it’s undocumented in the README. Unexplained dependencies in a production environment are a flag [README].
- No REST API documentation. The feature list includes “rest_api” in the canonical features, but there’s no API documentation visible in the README or repository description. External integrations beyond Strava are unclear [README].
- Email-dependent for weekly updates. The weekly leaderboard and progress emails require SMTP configuration. If you don’t have an email provider set up, this core engagement feature doesn’t work [README].
- 25 commits total. This is a young repository or one that hasn’t received significant development. Evaluate whether the feature set is complete enough for your needs without expecting active development [README].
Who Should Use This / Who Shouldn’t
Use Workout Challenge if:
- You’re organizing a specific fitness competition (office step challenge, friend group January streak, team health month) and want a custom leaderboard without SaaS subscriptions.
- Your group includes a mix of device ecosystems (Apple, Garmin, Android, none) and you need device-neutral tracking.
- You or someone in your group is comfortable deploying a Docker Compose stack and owning the maintenance.
- Privacy genuinely matters — you don’t want workout and health data aggregated by a fitness SaaS.
- You want fair competition mechanics that reward participation over performance.
Skip it if:
- You want a managed cloud solution with no server maintenance — there isn’t one.
- You need the competition to run indefinitely with commercial reliability guarantees — this is a solo developer’s project.
- Your group is on all-Apple or all-Garmin — the native platform challenges will be less setup for the same result.
- You need enterprise features: admin controls, SSO, audit logs, formal support. None of those exist.
- You need a stable, well-documented license for corporate deployment — verify the LICENSE file first.
Alternatives Worth Considering
- Strava Clubs + Challenges — the easiest option if everyone in your group already has Strava. Premium ($7.99–11.99/mo per person) unlocks the full challenge feature set. Closed-source SaaS, data goes to Strava/Meta.
- Garmin Connect challenges — built into Garmin’s app. Free, works well, hardware-locked to Garmin devices only.
- Apple Fitness+ shared rings — if every participant has an Apple Watch. Elegant UX, completely Apple-ecosystem-locked.
- Hevy (workout tracking) — doesn’t do group competitions but is a strong free self-hosted-adjacent option for solo workout logging.
- OpenScale / openScale — open-source weight tracking, narrower use case but similar privacy-first philosophy.
- A shared spreadsheet — genuinely worth comparing. For a simple challenge tracked manually, a Google Sheet with a formula can replicate 70% of this functionality with zero infrastructure. Use Workout Challenge when the automation (Strava sync, email updates, point-cap logic) justifies the deployment overhead.
Bottom Line
Workout Challenge is a well-conceived solo project that solves a real, specific problem: running a fair, private fitness competition across a mixed-device friend or work group, without paying per-seat SaaS fees or handing health data to wearables companies. The point mechanics are genuinely thoughtful. The Docker deployment is clean. The Strava integration handles the data-entry friction that kills most manual tracking systems.
The honest qualifier is that this is a 142-star, 25-commit project by one developer. There are no independent reviews, no commercial backing, and an unverified license. If you need reliability guarantees, an active community, or ongoing feature development, this isn’t the right bet. But if you’re organizing a specific time-boxed challenge (the January step competition, the Q2 fitness bet with coworkers) and want it hosted on your own server in an afternoon, Workout Challenge is one of very few open-source tools built explicitly for that use case.
If the Docker deployment is the blocker, upready.dev deploys self-hosted tools like this as a one-time service. You get the privacy benefits without the infrastructure work.
Sources
Primary sources:
- [README] Workout Challenge — GitHub README and repository (vanalmsick/workout_challenge, 142 stars, 7 forks). https://github.com/vanalmsick/workout_challenge
Note on third-party reviews: Sources [1]–[5] provided for this review were general fitness content (fitness challenge blogs, a UK gym legal compliance guide, an MS fitness podcast, a 2012 SELF Magazine event listing) and contain no information about the Workout Challenge software. No independent third-party reviews of this specific software were available at time of writing.
- Self Challenge Archives — Train With Bain. https://www.trainwithbain.com/tag/self-challenge/
- Run the Year Archives — Train With Bain. https://www.trainwithbain.com/tag/run-the-year/
- Blog Archives — EZFacility. https://www.ezfacility.co.uk/category/blog/
- MS Fitness Challenge Podcast — msfitnesschallenge.org. https://www.msfitnesschallenge.org/msfc-podcast/
- Frugal Finance: SELF Magazine Park Workout Playlists — myfrugalfitness.com. https://www.myfrugalfitness.com/2012/04/self-magazine-park-workout-playlists.html
Features
Integrations & APIs
- REST API
Mobile & Desktop
- Mobile App
Replaces
Related Health & Lifestyle Tools
View all 53 →Monica
24KPersonal CRM for tracking interactions with friends, family, and contacts with relationship management tools.
Habitica
14KHabitica is a self-hosted habit & personal tracking tool with support for Habit Tracking, Tracking.
Mealie
12KMealie handles material design inspired recipe manager as a self-hosted solution.
Tandoor Recipes
8.1KTandoor Recipes handles manage recipes, plan meals, build shopping lists, and much much more as a self-hosted solution.
Workout.cool
7.1KWorkout.cool lets you run modern fitness coaching platform entirely on your own server.
wger
5.8KReleased under AGPL-3.0, wger provides web-based personal workout on self-hosted infrastructure.