Offline-first workout tracking for Android and iOS.
openGym is standalone Expo app for planning routines, logging workouts, tracking progress, and managing body weight. It works fully offline after installation.
- 📴 Offline first — no backend, account, sync, telemetry, or runtime network dependency.
- 🔒 Private by default — workout data remains on device.
- 📈 Built for progression — routines, sets, effort, records, history, and statistics.
- ⏱️ Workout-ready — rest timers, warm-up flow, supersets, exercise media, and reminders.
- 💾 Portable data — import supported workout exports; back up and restore locally.
- 🌍 Accessible anywhere — dark mode, localization, readable touch targets, and native UI.
cd mobile
npm ci
npm test -- --runInBand
npm startUse npm run android or npm run ios to launch a native development build. See
mobile/README.md for prerequisites, native builds, local backups, imports,
notifications, and release signing.
mobile/— Expo app, source, tests, and bundled offline assetsdocs/routine-json-schema.md— JSON schema for AI-generated workout plans.github/workflows/mobile-ci.yml— pull-request and main branch tests.github/workflows/mobile-release.yml— signed Android APK release workflow
After configuring Android signing secrets described in mobile/README.md, push an annotated semantic-version tag. Release workflow runs tests, builds a signed APK, and creates a GitHub Release.
git tag -a v1.0.0 -m "v1.0.0"
git push origin v1.0.0Read CONTRIBUTING.md before opening a pull request. Report suspected vulnerabilities privately under SECURITY.md; never open a public security issue.
openGym is licensed under GNU AGPL v3.0. See LICENSE and NOTICE.md for license and third-party attribution details.