03 / FULLSTACK APPLICATIONS
TrainPilot
A training log that structures programs, exercises, and sets, with local storage and support for synchronization.
Visit live site
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.