ferlogs
Projects

moodcycling

Client work Live

A cycling studio that wanted its classes to work at home, for people who will not be talked into a gym. Delivered and still in production: subscriptions, billing, and video that starts when you press play.

What it is

a studio, unbundled

Indoor cycling is a class you buy, and the difference from a video library matters: the product had to feel like turning up somewhere at a time, with an instructor waiting.

What was delivered is a full subscription platform: sign-up, plans, recurring billing, the class catalogue, and video delivery that holds up on a living-room connection, plus a companion web app.

The classes, front and centre. Recorded from the live site.

How it is built

the backend is the product here

Anything that touches money outlives the frontend it was built for, so the backend is a clean architecture NestJS service over Postgres with Prisma: the subscription rules sit in a domain layer that does not know what Stripe is, and the payment provider is an adapter behind it.

That sounds like ceremony until the first pricing change, or the day the provider's webhook arrives twice for the same invoice. Auth is Clerk, payments are Stripe, and video is Mux: three problems that are somebody else's core business and were never going to be mine.

moodcycling pricing: a plan for individuals at 12.90 euros a month and a professional plan for gyms and instructors at 19.90
Two plans, monthly or annual, cancel whenever: every one of those words is a rule the billing code has to honour.
  • NestJS
  • Prisma
  • PostgreSQL
  • Clerk
  • Stripe
  • Mux
Role
Engineering, delivered for the client
Stage
Live, in production
Scope
Platform, billing, video, web app
Today
Still maintained by me

Building something with subscriptions?

Recurring billing, access control and video delivery are the three parts that get expensive when they are built in a hurry. I took this one from an empty repository to production and I still maintain it.

Tell me what you are building

Keep looking around