Personal project · 2021 — 2022
Gymism Club
A coach-matching platform built solo during COVID
- Nuxt
- Vue
- Firebase
- Apollo GraphQL
- Stripe
- Cloud Run
- PWA

The problem
During COVID, gyms were closed and people who wanted to keep training had no easy way to find a personal trainer, while coaches across a range of sports had no easy way to find clients. There was no place that matched the two sides.
The approach
Design, build and ship the whole product alone — frontend, backend, payments and deployment. The frontend is a Nuxt.js PWA, so it installs and behaves like an app without app-store friction, with Firebase and Apollo GraphQL behind it and Stripe handling payments, all deployed on Google Cloud Run.
The outcome
A working two-sided marketplace connecting people with personal trainers across a range of sports. It is also the project that taught me what owning every layer of a product actually costs — design, code, payments and ops, with one pair of hands.
Architecture moves
- Nuxt.js PWA frontend, installable to a home screen with no app store between the product and its users.
- Firebase for auth and data, with Apollo GraphQL as the API layer between client and backend.
- Stripe integration for payments between clients and coaches.
- Deployed on Google Cloud Run, so hosting scales down when a side project is quiet.
Performance levers
- PWA caching keeps repeat visits fast on the mid-range phones most users browsed with.
- Serverless deployment meant no idle server to maintain or pay for.
Engineering impact
- Shipped a complete two-sided marketplace as a one-person team — design, frontend, backend, payments, and deployment.
- The project that proved I could carry a product end to end, not just the interface.
Challenges conquered
- Being the only person on design, code and deployment, which forces honest prioritisation over polish.
- Building the trust-sensitive parts — profiles, matching, payments — with the resources of one person.