Track workouts, view progress, share with friends, and sync data offline.

React Native
Supabase
Expo

Overview

Rep is a workout tracking app built to support consistent strength training without unnecessary complexity. Inspired by existing apps like Strong, Rep focuses on fast workout logging, offline reliability, and meaningful progress tracking. The app uses a local-first architecture and is designed around real gym usage, with features added only when they proved necessary.

Media Gallery

Profile Page
Start Workout Page
History Page
Details Modal
Add Exercise Modal
Add Exercise Modal 2
Workout Modal
Completing Sets
Completed Workout
Explore Page
Create Post Page
Add Workout To Post
Settings Dropdown
Notifications Page

Problem & Solution

Many workout apps include excessive features that slow down basic logging and don't adapt well to real gym workflows.

Rep prioritizes speed, offline support, and usability by storing all workout data locally and syncing in the background. By using the app personally, features were shaped by real needs rather than assumptions, leading to a focused and practical MVP.

Key Features

  • Log workouts, exercises, and sets with offline support
  • Local-first data storage with background sync
  • Track workout history and personal records
  • Social feed with shared workouts, likes, and interactions
  • Push notifications for follows and likes
  • Native charts for visualizing workout progress

Technical Highlights

  • Built with React Native for cross-platform development
  • Implemented a local-first data model using WatermelonDB
  • Designed custom sync logic with Supabase for pushing and pulling workout data
  • Built a social feed with relational data for users, posts, workouts, and likes
  • Integrated native Swift modules to render performant charts
  • Implemented push notifications with in-app toasts when the app is active

Challenges & Learnings

Local-First Sync Architecture - Implemented bidirectional sync between the local database and Supabase, handling conflict resolution and ensuring data consistency across sessions and devices.

Social Feed & Data Modeling - Designed a relational schema to support posts, attached workouts, likes, and follow relationships while keeping feed queries performant.

Native Chart Rendering - Built native chart components using Swift and bridged them into React Native to achieve smooth, high-performance visualizations.

Notifications & In-App Feedback - Implemented push notifications for social interactions and handled in-app notification states with custom toasts when the app is open.

Product Decisions

  • Shipped an MVP quickly and expanded features only when they were validated by real usage
  • Prioritized usability over feature count
  • Stopped feature development when additions no longer improved the core experience
  • Used personal daily usage to guide UX and feature priorities

Interested in this project?

Check out the live demo or view the source code on GitHub