3 min read
MESO 01 Gym Tracker

Gym

MESO 01 Gym Tracker is a mobile-first progressive web app built to replace the friction of using static weekly gym-program PDFs during training sessions.

Problem

My coach sends the training plan as a PDF at the start of each week. That worked as reference material, but it was awkward in practice:

  • PDFs are slow to navigate mid-workout
  • set, rep, and weight tracking still had to happen elsewhere
  • rest intervals were easy to lose track of
  • gym connectivity is unreliable, so depending on a normal web page would be fragile

I needed something faster than a document, but lighter-weight than maintaining a native iOS and Android app.

Solution

I built the program as a Progressive Web App instead of a traditional native mobile app.

That gave me the right tradeoff:

  • fast updates without app-store review cycles
  • installable home-screen experience
  • offline support for use inside the gym
  • a mobile-first UI designed around actual workout flow

The app turns each training week into structured workout screens with:

  • week and day navigation
  • per-set weight logging
  • completion tracking for exercises and training days
  • built-in 60s and 90s rest timers
  • bodyweight circuit round counting
  • exercise demo videos
  • weekly compliance and progress reports

Tech Stack

  • Vite
  • Vanilla JavaScript modules
  • HTML and CSS
  • Progressive Web App architecture
  • Service worker for offline caching and update prompts
  • localStorage for client-side workout persistence
  • Vercel for deployment

Why not just use an app?

I looked at existing gym apps and they all had more surface area than I needed - account setup, syncing, subscription tiers, generic program builders. None of them were going to load a specific PDF-based program from my coach.

The real constraints were:

  • the program changes every week
  • gym connectivity is unreliable
  • I’m using this mid-workout, so it needs to be fast
  • I didn’t need a backend or app-store distribution

A PWA hit all of those. Native would’ve been overkill.

Demo