Workout tracker
Lightweight
A strength-training log that turns every set into progress you can see.
Log workouts set by set, and Lightweight turns your history into estimated one-rep maxes, strength curves and personal records. It works offline first and syncs across your devices.
- Role
- Design & development
- Year
- 2025 – 2026
- Platforms
- iOS · Android
- Sync
- Offline first, cloud backup
- Status
- In development
What it does
-
Set-by-set logging
Every set is saved the moment it’s logged. There is no save button, and nothing is lost.
-
Progression analytics
Estimated 1RM (Epley), strength curves and progress over time for each exercise.
-
Personal records
Best performances are detected automatically, per exercise.
-
Routines
Build and edit your own routines and start a workout from them.
-
1,170 exercises
A built-in exercise library, many with clean monoline illustrations.
-
Sign in and sync
Email, Google or Apple sign-in, with history synced across devices.
How it’s built
-
01
Local first: Zustand persisted to MMKV is the source of truth and Firestore is a mirror. Writes that fail go to an offline queue scoped to the signed-in account and are never dropped.
-
02
Finished workouts are immutable. Deletes are written as tombstones so other devices learn about them, and a reconcile step merges cloud and local history on sign-in.
-
03
A layered architecture (domain, features, components, infrastructure) whose import rules are enforced by a test. Training maths lives in pure, tested domain rules.
-
04
No UI kit or chart library: the design system, charts and icons are hand-built in light and dark. Firestore security rules are tested against the emulator.
Stack
- React Native
- Expo
- TypeScript
- Zustand
- MMKV
- Firebase Auth
- Firestore
- React Navigation
- React Hook Form
- Zod
- Jest