full-stack · PWA
Hell Blazerlive
A Kengan Ashura–themed strength tracker with a live analytics engine.
A multi-user PWA that logs to a single atomic set-level grain, aggregates 1RM/tonnage/weekly-sets server-side, and lets an AI judge rank you on a ladder of Kengan’s deadliest fighters.
context
A real, multi-user workout app, not a demo. Every screen runs against live Postgres behind row-level security, sign-in is Google-only, and it installs to a phone as a PWA with offline logging and push reminders. The frame is Kengan Ashura: log every set like it counts, then earn your place on a ten-rung ladder of the manga’s deadliest fighters.
the spine
One atomic grain, nothing derived stored. Every log (from a program, a freeform session, or a bonus movement bolted on mid-workout) writes to the same set-level row. Estimated 1RM (Epley), tonnage, and weekly sets-per-muscle are computed by security-invoker Postgres views, so the client only ever fetches pre-aggregated numbers and RLS still applies to every one of them. Reads live in a typed data layer, writes are Zod-validated Server Actions, with no raw Supabase calls scattered through components.
what i built
- A savage-fast mid-workout logger: every new set copies the previous set’s weight and reps forward, last session’s numbers show inline as a target (last · 60kg×5), and debounced autosave flushes on tab-hide without ever creating a duplicate
- Live PR detection ("Removal"): the moment a working set beats your all-time heaviest load or best estimated 1RM, a callout fires and the set is badged, with baselines drawn from prior sessions only and folded into a running best so it never over-fires on a warm-up ramp
- Programs, not just templates: build a split once and run it as a multi-week program, then pause, resume, roll back a day, preview tomorrow’s session, or swap a movement mid-workout so it becomes that day’s new default going forward
- A server-side analytics engine surfaced through nine data-dense Recharts views: consistency heatmap, muscle-balance radar, per-exercise 1RM and volume, weekly sets-per-muscle, with secondary muscles credited at 0.5× so accessory work counts honestly
- An AI judge (DeepSeek) reads your full history and ranks you on the ladder from Rei Mikazuchi to Kuroki Gensai, bodyweight-relative on the big compounds, rewarding consistency, rounding up when you sit between tiers
outcome
Live at hellblazer.vercel.app against real user data: a second account sees zero of the first’s, enforced by RLS on every table; Google OAuth only, no passwords. Canonical weight is stored in kilograms and converted only at display, so unit bugs can’t reach the data. It installs to the home screen as a PWA (offline shell, offline logging, and a daily cron that pushes a reminder when a programmed workout is due), with the entire UI re-skinning from a single accent channel variable, applied server-side with zero flash.
A real app people train on: live, multi-user, offline-capable, and honest enough to tell you which Kengan monster you actually rank against.