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.
Entrenamientos guiados, nutrición con IA, despensa inteligente y progreso real. Disponible para Android y en la web.
Translation pending
Sports & fitnessTypeScript · JavaScriptGitHub @guillermoscriptOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
AI-powered calisthenics & fitness app — track workouts, nutrition, and progress with a personal AI coach. Cross-platform React Native app + web PWA, self-hostable on PocketBase. Free & open source.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Your AI calisthenics & fitness coach — workouts, nutrition, and progress in one app.
Train with a structured calisthenics program, log every set, track your nutrition, run cardio with live GPS, and let an AI coach adapt the plan to you. Free, open source, and self-hostable.
📱 Download the Android app · 🌐 Try the web app · ⭐ Star this repo
Most fitness apps are paywalled, bloated, or cloud-locked. Calistenia is the opposite:Read the full README ↗Train with a structured calisthenics program, log every set, track your nutrition, run cardio with live GPS, and let an AI coach adapt the plan to you. Free, open source, and self-hostable.
📱 Download the Android app · 🌐 Try the web app · ⭐ Star this repo
Most fitness apps are paywalled, bloated, or cloud-locked. Calistenia is the opposite:
Get it now: gym.guille.tech/download (Android) or gym.guille.tech (web).
A pnpm monorepo with shared business logic across native and web.
| Part | Stack |
|---|---|
Mobile (apps/mobile) | React Native + Expo, expo-router, MapLibre, Notifee, Sentry, Android widgets |
Web (apps/web) | React + Vite, Tailwind CSS, shadcn/ui, PWA |
Shared core (packages/core) | Cross-platform hooks, data layer, i18n (EN/ES) |
AI / MCP (mcp-server) | MCP server + AI API for the coach and smart tools |
| Backend | PocketBase (SQLite, self-hosted) — 30+ collections, migration-driven |
| Testing | Playwright |
calistenia-app/
├── apps/
│ ├── mobile/ # Expo React Native app (Android APK + iOS)
│ └── web/ # React + Vite PWA
├── packages/
│ └── core/ # Shared hooks, data, locales
├── mcp-server/ # AI coach + MCP tools
├── pb_migrations/ # PocketBase schema migrations
└── pocketbase # PocketBase binary
Requires Node 20+ and pnpm 10+.
# 1. Install deps (whole monorepo)
pnpm install
# 2. Start PocketBase (backend + API)
pnpm pb:serve
# Admin UI: http://127.0.0.1:8090/_/ (create admin on first run)
# 3a. Run the web app
pnpm --filter @calistenia/web dev # http://localhost:5173
# 3b. Run the mobile app
cd apps/mobile && pnpm start # Expo dev server
Migrations in pb_migrations/ apply automatically on PocketBase start.
A GitHub Action (.github/workflows/build-mobile-apk.yml) builds the release APK and publishes it as a GitHub Release. The web download page fetches the latest release automatically.
# Trigger a release: bump version in apps/mobile/app.json, then
git tag mobile-v1.0.1 && git push origin mobile-v1.0.1
The web app + PocketBase ship as a single Docker image (multi-stage build) and deploy via Dokploy + GitHub Actions on push to main. PocketBase serves both the API (/_/) and the static frontend from one port (8090). See Dockerfile and docker-compose.yml.
# Local smoke test
docker compose up --build # http://localhost:8090
Issues and PRs welcome. If Calistenia helps you train, a ⭐ on the repo goes a long way and helps others discover it.
MIT — see LICENSE.md. Use it, fork it, self-host it.