Progressive Overload
REST API and Flutter mobile client for athletes who train with progressive overload — structured routines, set logging, PR detection, and volume analytics.
Progressive Overload is a full-stack fitness platform designed around one training principle: gradually increasing weight, reps, or intensity across sessions. It targets athletes and coaches who want structured programming and measurable progression — not another casual workout diary that forgets what you lifted last month.
The product pairs a Node.js and Express REST API with a Flutter mobile client. Athletes plan routines, log sets in the gym, and review progression charts afterward. MongoDB stores flexible workout history while Mongoose models keep collections consistent as features grow from basic logging to analytics-heavy views.
Authentication uses both JWT and Firebase Auth so the API can stay stateless for mobile sessions while the client still supports familiar email/social login flows. That dual approach keeps token handling clean for API consumers and reduces friction for athletes who expect one-tap sign-in.
The exercise database is built for speed between sets. Users filter by muscle group, equipment, and movement pattern instead of scrolling endless lists. Routine builder support covers supersets, circuits, RPE/RIR targets, tempo prescriptions, and rest-timer presets so programming matches how strength athletes actually train.
Every logged set records weight, reps, RPE, notes, and warm-up flags. Those events feed server-side PR detection for estimated 1RM, volume, and rep-max records. Volume trends, muscle-group heatmaps, and per-exercise charts make imbalances visible over weeks — progression becomes evidence, not guesswork.
From an engineering perspective, the project shows how I ship end-to-end systems: clear API boundaries, dual auth for mobile and API clients, indexes that keep history queries fast, and analytics that remain useful as the dataset grows. The stack — Node.js, Express, MongoDB, Firebase, and Flutter — was chosen for iteration speed without abandoning structure.
Whether you are evaluating a fitness app architecture, hiring a full-stack developer for a mobile + API product, or comparing Flutter backends, this case study documents the tradeoffs behind a production-minded training tracker rather than a demo CRUD app.
Dual authentication
JWT for stateless API sessions plus Firebase Auth for social and email login on the Flutter client — secure for APIs, familiar for athletes.
Exercise database
Searchable library filterable by muscle group, equipment, and movement pattern so athletes pick movements in seconds between sets.
Routine builder
Supersets, circuits, RPE/RIR targets, tempo control, and rest-timer presets for structured progressive-overload programming.
Set logging
Per-set weight, reps, RPE, notes, and warm-up flags with instant history recall during and after each session.
Automatic PR detection
Server-side calculation of estimated 1RM, volume, and rep-max PRs across every logged session without manual spreadsheet tracking.
Analytics
Volume trends, muscle-group heatmaps, and per-exercise progression charts that reveal imbalances and long-term improvement.