A personal workout tracking app for Android, built with React Native and Expo.
FitForge was born out of a simple frustration β keeping track of workout programs across pen and paper, notes apps, and spreadsheets was messy and unreliable. FitForge is a focused, privacy-first alternative: no ads, no account required, all data stays on your device.
Currently in closed testing on the Google Play Store.
- Sign up on this Google Form: https://docs.google.com/forms/d/e/1FAIpQLSd_p-KJLYu-1epsBpEU0PpgoCVXB74wv0tWOJTQ4OygKZBhTQ/viewform?usp=send_form
- Iβll add you to the Closed Testing list.
- Youβll get access to FitForge via the Google Play Store.
Note: Youβll need a Gmail account to participate. Your email will only be used for app access!
Thanks for supporting a hobby project! π
| Home | Workout Session | Finish Screen |
|---|---|---|
![]() |
![]() |
![]() |
| Pre-made Workouts | Stats & Calendar | Insights |
|---|---|---|
![]() |
![]() |
![]() |
Workout Management
- Create custom workout programs with exercises, sets, reps, weight, and rest timers
- Organise workouts into folders
- Archive, restore, and version past workouts β never lose a program again
- Pre-made workouts included for quick starts
Active Session
- Guided workout session mode β one exercise at a time, rep counter, set tracking
- Timed exercise support with configurable break times
- Skip exercise, quit session options
Notes & Sharing
- Attach personal notes, reference links, and an image gallery to any workout
- Share workouts via QR code
Stats & Insights
- Calendar view (week, month, year, all-time)
- Stats summary β total activities, workout vs sport breakdown, did-not-finish tracking
- Insights β preferred exercises ranked by frequency, preferred days and times
- Logs both gym workouts and sports/physical activities
Reminders
- Configurable workout reminders with day-of-week and time selection
Privacy
- No ads
- No account or sign-in required
- All data stored locally on device
| Layer | Technology |
|---|---|
| Framework | React Native (Expo) |
| Build | EAS Build (cloud)^ |
| Distribution | Google Play Store (Android only) |
| CI/CD | GitHub Actions β EAS Build β Play Store internal track |
| Pre-commit | Lefthook β gitleaks secret scanning, build number auto-increment |
| Testing | Jest β unit tests for utility functions |
| i18n | Custom i18n β en-AU, en-GB, en-US |
| Design | Custom design system inspired by Material Design |
^FitForge started with iOS in mind. Once the Apple Developer Program cost ruled out iOS distribution, I dropped to Android-only and EAS became the obvious choice β purpose-built for Expo, handles Play Store submission, no local toolchain to maintain.
Defined in .github/workflows/android-release.yml.
Three-job chain on version tag push (v*):
test β build β submit
- test β runs Jest unit test suite
- build β EAS Build cloud build targeting production profile, produces
.aabartifact - submit β submits to Play Store internal track via EAS Submit using Google Service Account (least-privilege permissions)
Actions pinned to immutable commit SHAs. permissions: contents: read set at workflow level. Secret scanning via gitleaks on every commit via Lefthook pre-commit hook.
βββ .github/workflows/ # GitHub Actions CI/CD pipeline
βββ assets/ # App icons, splash screen, sounds
βββ scripts/ # Build utilities (auto build number)
βββ src/
β βββ components/ # Shared UI components
β β βββ design-system/ # Button, Typography, FAB, DonutChart, etc.
β βββ constants/ # App constants, version
β βββ context/ # React context (ThemeContext)
β βββ hooks/ # Custom hooks
β βββ i18n/ # Internationalisation (en-AU, en-GB, en-US)
β βββ navigation/ # React Navigation root navigator
β βββ screens/ # App screens
β βββ theme/ # Colors, typography, spacing, elevation
β βββ utils/
β βββ __tests__/ # Jest unit tests
βββ App.js # Entry point
βββ app.config.js # Expo config
βββ eas.json # EAS Build profiles
βββ lefthook.yml # Git hooks config
βββ FITFORGE_PRIVACY_POLICY.md
npm testJest unit tests located in src/utils/__tests__/.
| Item | Status |
|---|---|
| Android build | β Stable |
| Play Store | π‘ Closed testing |
| iOS | Tested and working β not released (Apple Developer Program fee not justified for a hobby app) |
Built by Alex Chuc





