Grindrise
Tech stack
Context
Grindrise is a mobile fitness tracker (running, strength training and other endurance sports) that adds an RPG gamification layer to keep users consistent. Players pick a class, earn XP with every workout, level up and unlock story fragments. The core challenge is making that progression credible: since any user-entered metric can be faked, only the server awards XP, using a scoring model designed so that cheating pays very little. The project is under active development: the workout → XP → level loop works end to end, while history, progression analytics and the first published mobile build are still to come.
Key features
- Guided multi-step onboarding (welcome, sport choice, class choice) followed by passwordless sign-in with a one-time code sent by email. The draft is kept if the user leaves the app to fetch their code.
- Per-sport workout logging with server-side XP: 60 XP for showing up and up to 40 XP for effort on a concave curve. Anti-cheat guardrails apply (two credited workouts per day, at least 30 minutes apart, backfill limited to 7 days). An animation announces each level milestone.
- Strength tracking exercise by exercise and set by set, with a catalog filterable by muscle group. Users can create their own exercises, follow live session stats and review a final summary.
- Custom training programs organized into template days with drag-and-drop reorderable exercises. A workout can be started directly from a template day.
- Streak counted in local days based on the player's time zone, with fixed bonuses at milestones (3, 7, 14, 30 days, then every 30 days).
- Narrative system under construction: the unlock mechanism (main storyline tied to overall level, side storylines per sport) is in place on the server, while the story content and codex are still to come. Level-up emails are sent, with one-click unsubscribe.
What it demonstrates
This project shows the ability to design a complete end-to-end system (mobile, API, database, infrastructure) by reasoning from a threat model first. The client never writes XP, RLS is tested automatically and the scoring model is designed so that cheating pays very little. It also reflects real engineering discipline: business logic isolated in pure functions tested edge case by edge case, atomic database transactions, trade-offs explicitly documented in the code (local JWT verification versus immediate revocation, JS-thread gestures versus a native dependency) and a hardened containerized deployment across two isolated environments. Finally, product thinking shows in decisions like removing the effort bonus for strength training (tonnage is too easy to inflate) or computing streaks in the player's local time zone.