All projects

03 / FULLSTACK APPLICATIONS

TrainPilot

A training log that structures programs, exercises, and sets, with local storage and support for synchronization.

Visit live site
● ● ●trainpilot.online↗
Public interface of TrainPilot
PUBLIC INTERFACE
The public program picker. No personal workout data is shown.

The objective

Build a practical training app with program selection, workout logging, and progress tracking. The interface is designed around following a workout one set at a time.

My contribution

  • Defined the needs and functionality for training planning and structured workout data.
  • Worked on design, testing, troubleshooting, and iterative improvements to a practical application.

How I worked

I used Codex and other AI tools extensively for code implementation. My work focused on developing the idea, defining functionality, making design choices, testing, troubleshooting, and improving the product over several iterations. The technical overview describes the implementation; it does not imply that I wrote all the code independently.

Technical challenges & approach

From a training program to recorded sets

The data model separates programs, days, exercises, workouts, and sets. The React interface uses a shared state and storage layer. The implementation also covers workout history, personal records, and bodyweight entries.

Local use and user-owned data

Local storage allows use without an account. Supabase support includes authentication and PostgreSQL tables with row-level access policies. Pending completed workouts can be retried for synchronization. This also introduces difficult failure cases: local persistence does not guarantee reliable cross-device synchronization.

Web and Android from a shared interface

The repository includes PWA setup and a Capacitor wrapper with a separate static export for Android. This establishes a technical packaging path, but does not establish a published or fully tested Google Play release.

Learning focus

The work connects user journeys to data modeling: a training program and a completed workout are different things. It also provides experience evaluating persistence, error messages, and unavailable networks.

Project scope

The public introduction and program picker were checked on mobile and desktop. Accounts, synchronization, and Android release were not verified end to end. No dedicated automated suite for the web app's business logic was found in the reviewed revision.

NEXT PROJECT

TeamHabit