elite60.in
elite60.
A 60-day progressive overload fitness platform that automates strength programming, tracks athletic goals with live GPS, and ships as both a PWA and native Android APK — designed and built solo.
Role
Full-Stack Developer
Timeline
2025
Platform
PWA · Android APK
Category
Fitness Tech · Solo Build
PWA + APK
Single codebase, dual deployment
Live PWA · app.elite60.in
120+
Workout Sessions
5
Structured Programs
4
Progressive Phases
$0
Infra Cost / Month
2-in-1
Deploy Targets
Solo
Design to Deployment
progressive overload
·
strength
·
gps athletics
·
offline-first
·
pwa
·
android
·
progressive overload
·
strength
·
gps athletics
·
offline-first
·
pwa
·
android
·
The Product
Built for the screen in your pocket.
Onboarding
Onboarding
Splash
Splash
Home
Home
Plans
Programs
Workout
Workout
Progress
Progress
Goals
Goals
Athletics
Athletics
GPS Goal
GPS Goal
GPS Live
GPS Live
01 — Problem
Fitness apps fail the serious trainee
Every serious lifter eventually outgrows consumer fitness apps — they demand manual weight decisions, scatter data across five tools, drop out when the gym has no signal, and hand everyone the same generic plan regardless of experience.
No Automatic Progression
Users lack programming knowledge to determine when to increase weight. Plateaus result from guesswork and inconsistent manual decisions — no logic, no structure, no momentum.
Fragmented Tracking
Multiple apps for lifting, cardio, nutrition, and GPS create disconnected data with no single source of truth — and no way to see training as a whole system.
No Offline Support
Network failures in gyms cause loss of workout history and full loss of functionality. A fitness app that requires a signal at the squat rack is a broken fitness app.
Generic Programs
One-size-fits-all approaches ignore beginner vs. advanced differentiation and individual capacity — leaving both ends of the spectrum underserved and under-progressed.
02 — Solution
One platform. Automated. Always on.
Elite60 replaces guesswork with logic — auto-progressing weight, structuring phases, tracking GPS runs, and syncing data offline. Built on a single React + TypeScript codebase that ships natively to both web and Android without compromise.
01Assess
02Program
03Train
04Auto-Adapt
05Analyse
06Progress
Linear Progression Engine
Automatic +2.5kg upper body / +5kg lower body increases on session success. Holds on a miss. Triggers a 5% deload after two consecutive failures. Zero decision-making required from the user — the system programs itself.
Dual-Layer Offline Persistence
Every workout write hits localStorage immediately, then syncs to the server async. Gym has no signal? The session still saves, still progresses, still shows in history. Workbox service worker intercepts all network requests.
Live GPS Athletics Tracker
MapLibre GL v5 with CartoDB Dark Matter tiles — free, unlimited, no API keys. Real-time polyline routing and Haversine distance calculation. Runs and outdoor sessions tracked alongside gym work in one system.
PWA + Native Android APK
Capacitor v8 wraps the same React 18 codebase for native Android deployment. touch-action: manipulation, 16px input font-size, overscroll-behavior: none, and haptic feedback — all the native feels, zero codebase fork.
03 — Core Features
Every training need, built in
Strength Programming
Linear Progression Engine
The core of Elite60 — automatic weight progression that removes the single biggest reason lifters plateau. Tracks each lift independently: +2.5kg on upper body movements, +5kg on lower body on every successful session. A miss holds the weight. Two consecutive failures triggers a programmatic 5% deload. No spreadsheet, no coach, no guessing.
Auto +2.5kg / +5kg increments Failure detection 5% auto-deload
+5kg
Program Library
5 Structured Programs, 4 Progressive Phases
PPL (Push Pull Legs), 6-Day Bodybuilding, 3-Day Full Body, 4-Day Intermediate, and 5-Day Hypertrophy — each structured across 4 progressive phases. A Beginner/Advanced toggle adjusts sets, reps, and rest periods in real time for the same program. 120+ unique workout sessions, no repetition until Phase 4.
5 programs 4 phases each Beginner / Advanced toggle
120+
Goal Tracking
Strength Goal Plans
Auto-generated weekly plans with per-lift progress tracking and Recharts visualisation. Users set a target — a specific weight on bench, squat, or deadlift — and the system calculates the progression path from current 1RM. Progress charts update after every session, pulling from TanStack Query's server state cache.
Auto weekly plan generation Progress charts 1RM tracking
4
Athletics
Live GPS Athletics Tracker
MapLibre GL v5 (Apache 2.0) with CartoDB Dark Matter tiles — zero API costs, unlimited requests. Real-time polyline routing as you run with Haversine formula calculating live distance. Cadence, duration, pace, and elevation logged per session alongside gym data. The first fitness tracker that doesn't charge you for going outside.
MapLibre GL v5 Real-time polyline $0 map API cost
$0
Admin
Admin CRM Dashboard
A separate React 19 + Vite 8 + Tailwind v4 admin application with KPI dashboard, full user management, and session history across all accounts. Built as an independent app in the monorepo — deployed separately, authenticated separately, with its own Supabase RLS policies.
KPI dashboard User management Session history
3x
Infrastructure
Offline-First Sync Architecture
Workbox service worker intercepts every network request. localStorage writes immediately, async server sync on reconnection. No session is ever lost. The backend is Express + Prisma v5 on Supabase, bundled via serverless-http into Netlify Functions — all running on free-tier services. Zero ongoing infrastructure cost.
Workbox service worker Netlify Functions Free tier Supabase
100%
04 — Engineering
Hard problems, clean solutions
Four non-obvious engineering challenges surfaced during the build. Each required a deliberate solution — not a workaround, but the correct architectural decision.
Monorepo
Three Independent Apps
User PWA + Android (React 18, Vite 5, Capacitor v8), Admin CRM (React 19, Vite 8, Tailwind v4), and Backend (Express + Prisma v5, Netlify Functions) — independently deployable from one repo.
Single source of truth
State Management
TanStack Query v5
Server state is owned by TanStack Query — stale-while-revalidate, optimistic updates, background refetch. Client state stays in React — no Redux, no prop drilling, no context hell.
Zero redundant fetches
Type Safety
Zod End-to-End
Zod schemas validate at the API boundary — request bodies, response shapes, and env vars. TypeScript infers types from Zod, not the other way around. One schema, zero drift between client and server.
Full-stack type safety
01
Rest timer escaped the nav bar
The rest timer component was being clipped and hidden behind the navigation bar due to z-index stacking context conflicts — a common failure mode when fixed elements live inside positioned parents. Solved by implementing a React Portal targeting a sibling DOM node at the root level, completely escaping the component stacking context.
React Portal
Root-level escape
02
Express + Prisma on serverless infrastructure
Managing a traditional Express + Prisma backend on Netlify Functions requires careful bundling — Prisma's query engine is a native binary that can't be bundled normally. Solved with serverless-http wrapping Express into a Lambda handler, esbuild bundling with Prisma marked as external, and the engine copied post-build.
serverless-http
esbuild + Prisma external
03
Native app feel on a web foundation
Web apps on mobile feel wrong without deliberate intervention — tap delays, input zoom, rubber-band overscroll, no haptics. Applied touch-action: manipulation globally to eliminate 300ms tap delay, 16px input font-size to prevent iOS zoom, overscroll-behavior: none to remove bounce, and Capacitor haptics for native vibration feedback on key interactions.
Capacitor v8
Native haptics
04
Map rendering without commercial API costs
Google Maps and Mapbox both require API keys with per-request billing — unacceptable for a $0 infrastructure target. Switched to MapLibre GL v5 (Apache 2.0 license, zero cost) with CartoDB Dark Matter tiles (free, unlimited, no keys). The result: a production-grade GPS tracker that costs nothing to run at any scale.
MapLibre GL v5
CartoDB tiles · $0
1
Codebase ships to both PWA and native Android APK — no fork, no duplication, no separate teams
$0
Ongoing infrastructure cost — free-tier Supabase, Netlify Functions, CartoDB tiles, and MapLibre GL
100%
Feature parity offline — every workout session, progression calculation, and history view works without a network
05 — Architecture
Principles that shaped every decision
Four guiding constraints governed every technical and product decision — from the choice of map library to the offline persistence model.
Offline-First, Always
Every feature was designed to work without a network connection. localStorage as the primary write target, async server sync on reconnection — not a fallback mode, but the default mode. The gym is a faraday cage; build accordingly.
Zero Infrastructure Cost
Every third-party dependency was evaluated against a $0 ongoing cost target. Free-tier Supabase, Netlify Functions, MapLibre + CartoDB, Resend email — production-grade services at zero dollar spend. Scale doesn't change this.
Automation Over Configuration
The progressive overload engine, goal plan generation, and deload logic are all automatic. Users set a goal once; the system handles every decision after that. Fitness programming is a solved problem — software should solve it, not defer it back to the user.
One Codebase, Two Deployments
Capacitor v8 wraps the same React 18 + Vite 5 codebase for both PWA and native Android. No divergent logic, no platform-specific branches. A single commit deploys to both targets — same test coverage, same type safety, same behaviour.
06 — Outcomes
Shipped. Live. Zero cost.
A complete production-grade fitness platform, built and deployed solo — every feature live, every target hit.
120+
Unique workout sessions across 5 programs and 4 progressive phases
$0
Ongoing infrastructure cost — free tier across every service
2-in-1
PWA and native Android APK from a single React + TypeScript codebase
100%
Offline functionality — full feature parity without network access
GPS
Live athletics tracking via MapLibre GL + CartoDB, zero API keys required
Solo
Designed, engineered, and deployed end-to-end by one person
Next Project
rankwatch.
buddhpriya93@gmail.com  ·  +91-8840-871-715  ·  buddh.in