Work out together and keep your streak alive โ miss a day and you both feel it.
ZippyFit turns accountability into a co-op game. You and a partner form a Duo and take on a daily challenge together. Stay consistent to grow your streak โ slack off and your team loses hearts. It's Duolingo's streak psychology, pointed at the gym.
- ๐ฏ Duo teams โ pair up with a 4-character invite code
- ๐ฅ Streaks & hearts โ shared accountability; if one partner misses, you both lose a heart
- ๐บ๏ธ Journey map โ a visual day-by-day path of your team's progress
- ๐ Grimoire โ unlock a "Scroll Fragment" of fitness wisdom on every workout
- ๐ Nudge & Spot โ poke your partner or request a spot when you can't make it
- ๐ Auth built in โ email/password via Convex Auth, with real-time sync
| Layer | Tech |
|---|---|
| Mobile | React Native ยท Expo Router ยท Reanimated ยท Moti |
| Realtime DB | Convex (live queries + auth) |
| Backend API | FastAPI ยท Uvicorn (Python) |
| Local tunnel | ngrok โ port 8000 |
๐ฅ๏ธ Runs fully local right now โ Expo Go + a local FastAPI backend (tunnelled via ngrok) + a Convex dev deployment. Next up: native builds and tester distribution via Fastlane and Firebase App Distribution.
# 1. Install dependencies (mobile + backend)
make install
# 2. Run the full stack (ngrok + backend + Convex + Expo)
make devThen scan the QR code with Expo Go, or press a / i to launch an emulator.
| Command | What it does |
|---|---|
make dev |
Run the full stack (tunnel + backend + mobile) |
make test |
Run mobile tests |
make kill |
Kill dev processes & free ports |
make help |
See every command (grouped menu) |
Run make help for the full list โ admin/utility commands (screenshots, password reset, etc.) live there.
zippy-fit/
โโโ mobile/ # React Native / Expo app
โ โโโ app/ # Expo Router routes (index, _layout)
โ โโโ screens/ # Dashboard, Auth, Tutorial
โ โโโ components/ # UI: ProfileModal, DuoButton, Containerโฆ
โ โโโ convex/ # Schema + serverless functions (teams, workouts, dashboard, adminโฆ)
โโโ backend/ # FastAPI service
โโโ scripts/utils/ # Dev tooling โ screenshot, reset_password, check_user, assign_team
โโโ docs/screenshots/ # Images used in this README
โโโ Makefile # Categorized command centre (run `make help`)
- Fastlane โ automated build & release pipeline
- Firebase App Distribution โ ship test builds to testers
- Push notifications โ nudges & streak-at-risk reminders
- Forgot-password flow โ in-app reset (Convex Auth email provider)
- Grimoire content โ replace placeholder facts with a curated library
- Refresher polish โ show only educational slides when replaying from settings
- Workout types โ log cardio / strength / mobility separately
- Partner profiles & avatars
- Test coverage โ expand TDD suite across screens and Convex functions
- CI โ lint + typecheck + tests on every PR
Zippy's animated mascot GIFs were generated with ComfyUI.
Built with โค๏ธ and a refusal to skip leg day.


