AI Adrian Iacuone Senior full stack engineer

Strongr

A gym log for routines, sets, high-intensity techniques, history, and imported training data.

SvelteKit, Drizzle, PGlite

Open the preview
Strongr screenshot

What it is

A personal workout log built for the gym: large controls, a rest timer, and a screen that stays awake during a session. You keep routines, log sets, and look back at history, personal records, and body measurements.

The live app is at https://strongr.duckdns.org. Sign-in is Google, limited to approved addresses. A /preview route shows the same screens with sample data, so anyone can click through.

What it does

  • Routines hold the plan: exercise order, target sets, rep range, and machine setup.
  • Sessions log sets and high-intensity techniques such as drop sets, rest-pause, and negatives.
  • Personal records are computed from history, so they never drift out of sync.
  • Body measurements sit beside training, including body-fat percentage.
  • Years of history can be imported from Strong and Body Measurement Tracker.
Strongr screenshot

Tech

Piece Role
Svelte 5, SvelteKit UI, routes, and server actions
TypeScript Workout state, imports, records
Drizzle ORM, PGlite Schema, migrations, and an embedded Postgres on disk
Chart.js Measurement and history charts
vite-plugin-pwa Installable app with a service worker
Caddy HTTPS in front of Node on an Oracle Cloud VM

Challenges

  • A workout is a stream of small writes. Each change is one operation, queued in order on the client and run in a transaction on the server.
  • Records come from history. Bests are queried from completed sets instead of stored twice.
  • Two exports, neither matching the schema. Importers map names, durations, and units onto the app's own data.