A full-featured, AI-powered gym tracking app built with React Native + Expo. Track workouts, visualize progress, and get coaching insights - all offline-first with real-time cloud sync.
Scan with your phone to open instantly in Expo Go. (Download Expo Go on iOS or Android - free, no account needed)
Open in Expo Go → (on desktop? open that link on your phone, or scan the QR above)
Se7en uses a 7-day rotating cycle model - workouts rotate by slot, not by calendar date, so your training program adapts to your schedule instead of breaking when life gets in the way.
| Feature | Description |
|---|---|
| Focus-Mode Workouts | One exercise per screen, steppers prefilled from your last set, one-tap logging with live PR detection |
| AI Coach | Contextual insights powered by Groq LLM + your own session history (RAG) |
| Progress Analytics | This month vs last month, biggest gain, workouts per week against your plan, a trend line for every lift |
| Post-Workout Summary | Volume-by-exercise and per-set charts, new records, shareable as a PNG with a custom background |
| Plan Builder | Drag-to-reorder days and exercises, plan templates (PPL, Upper/Lower, etc.) |
| Rest Timer | Built into the workout's bottom panel, per-exercise durations, notification when rest is over |
| Offline-First | Instant load from local cache, background sync to Firestore |
| Light & Dark | Theme toggle in Settings, applied live across every screen |
| Today | Workout | Post-Workout | Progress | Coach |
|---|---|---|---|---|
| Today's workout, week strip, cycle stats | One exercise at a time, inline rest timer, effort rating | Volume and per-set charts, records | Month vs last month, weekly consistency, lift trends | Chat grounded in your history |
This project was built to demonstrate production-quality React Native architecture - not just a tutorial app.
- 100+ TypeScript types - full schema coverage, no
any - Custom component library - flat, theme-aware UI with SVG charts built from scratch (no chart library), directly labelled and data-first
- Live light/dark theming - palette swap plus per-theme cached styles, no per-component rewrites
- State machines over booleans -
BarState = 'done' | 'rest' | 'missed' | 'pending'prevents logic bugs - Two-phase data load - AsyncStorage for instant UI, Firestore as authoritative source in background
- AI Coach with RAG - HuggingFace embeddings stored in Neon pgvector, retrieved per query, fed to Groq Llama 3.3 70B
- Reanimated 4 animations - soft ease-out motion (no springs) that respects Reduce Motion: drawn-in charts, count-ups, drag-sort, swipe actions
| Layer | Technology |
|---|---|
| Framework | React Native 0.86 · Expo 57 |
| Language | TypeScript 5.9 (strict) |
| State | Zustand + AsyncStorage (offline-first) |
| Backend | Firebase Firestore + Auth |
| AI | Groq (Llama 3.3 70B) · HuggingFace (embeddings) |
| Vector DB | Neon - PostgreSQL + pgvector |
| Animation | Reanimated 4 · Lottie |
| Gestures | react-native-gesture-handler |
| Build | EAS Build · Expo Updates (OTA) |
git clone https://github.com/jabluetooth/se7en.git
cd se7en
npm installCopy .env.example to .env.local and fill in your Firebase credentials, then:
npm start # Expo dev server
npm run ios # iOS simulator
npm run android # Android emulatorThe AI Coach (Groq, HuggingFace, Neon) runs through a Cloud Functions proxy so those credentials never ship inside the app - see functions/README.md to configure and deploy it.
Fil Heinz O. Re La Torre - Automation & AI Solutions Engineer, building integrations and AI-backed workflows that go from idea to production in days.
Other projects: Match · ZeroPress · Mimo · Insight · see all →