Chop Iron

An offline-first workout tracker with a Nigerian voice

Chop Iron is a workout tracker with a Nigerian voice. It includes 53 exercises, workout history, personal records, progress charts, and achievement tracking, with workout data stored locally.

Why I built it

I train, forget my numbers, and sometimes struggle to stay consistent. I wanted a tracker that made logging workouts feel simple instead of turning the gym into another admin task. Chop Iron grew from that idea, with a bit of Nigerian personality thrown in because fitness apps don't all have to sound the same.

Year2026
TypeMobile app
ClientPersonal project
My roleMobile engineering
PlatformiOS & Android
Chop Iron Hero

The guiding question was simple: does this make it easier to record a set and understand my progress? That shaped the offline-first architecture, compact workout flows, and copy built around the phrase, 'No dull. Go chop iron.'

53

built-in exercises

12

SQLite tables

4

personal-record categories

Offline-first

local workout storage

Challenge

Workout history has to stay consistent as records change. Streaks depend on distinct training days, personal records depend on previous sets, and achievements may need to be recalculated when a workout is edited or deleted.

Action

Local-first SQLite architecture

I used React Native, Expo, Zustand, and SQLite to store workout data locally. The database is organized across 12 tables, allowing workout logging and history access without requiring a network connection.

Workout calculations and progress

I implemented calculations for estimated one-rep max using the Epley formula, training volume, rep records, workout streaks, and achievement thresholds.

Motion and product personality

I used Reanimated for interactive bottom sheets and gestures, then carried the product's Nigerian/Pidgin voice through a dark interface designed around quick workout logging.

Result

Chop Iron brings workout logging, history, and progress tracking into a local-first mobile app. It helped me work through local data consistency, derived calculations, and interaction design without making connectivity a requirement for everyday use.

Stack

React NativeExpo SDKTypeScriptSQLiteZustandReanimatedExpo Router