sports2026

Gymlog

Offline-first workout tracker for a gym with no signal

Next.js 16TypeScriptTurso (libSQL)Drizzle ORMDexie / IndexedDBNextAuthTailwind CSSPWA
Personal Project
2026
Visit live site
Gymlog

Overview

A training app built for the place training actually happens: a basement gym with no signal. Plan the week, then log every set on the gym floor — one exercise at a time, last session's numbers as a ghost row above today's, and the screen kept awake between sets. Everything reads from the device, so it works the same whether there are four bars of signal or none.

Challenge

Every workout app assumes a network. In a basement you get nothing, so a set logged mid-session either spins or silently disappears — and the one thing a training log cannot do is lose what you lifted. The second problem is the gym floor itself: you are between sets, out of breath, holding a phone with chalk on your hands. Anything that needs more than one tap does not get used.

Solution

I tried every gym app I could find and none of them bent to the way I actually train, so I built my own. Everything lives on the phone, so the app behaves the same with no signal and catches up by itself once there is some — nothing you lift is ever lost. On the gym floor it shows one exercise at a time, last session's numbers above today's and the weights already set where you should be going next. And you can point ChatGPT or Claude at it to read your history and rework your week.

Results

A session logs end to end with no signal and nothing to think about. Premade programmes fit themselves to the equipment you actually own — exercises you cannot do are swapped for ones you can — so starting is a choice, not a setup task. CI is green only when a commit's tests pass, it builds, and that same commit reached production: the workflow waits for Vercel's verdict and smoke-tests the live site.

Key Features

01Works fully offline — every screen reads from IndexedDB, sync happens in the background
02Gym screen: one exercise at a time, last time's sets as a ghost row, screen kept awake
03Progression steppers pre-set to the next step, with the reason shown underneath
04Premade programmes fitted to the equipment you have
05Exercise library of 873 movements with start/end photos per movement
06Progress: top set and e1RM over time, records, week against plan
07Bodyweight logged daily and charted as a 7-day average
08Kilograms or pounds as an account setting, converted at the edge
09API with per-user tokens and an OpenAPI schema, for LLMs and scripts

Gallery