Skip to content
Back to work

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.