One brand, three product surfaces.

CityRow is a connected fitness company delivering on-demand rowing and HIIT classes. Since 2018, members have collectively rowed 574,710,253 metres — roughly 154 lengths of the Mississippi.

Runtime was tasked with three product surfaces that had to feel like one product: a flagship-rower tablet experience; a mobile app (iOS / Android) for owners of earlier rower models, with Bluetooth tracking; and a website with an e-commerce shop.

The hard part wasn't any one surface in isolation — it was making the three feel like a coherent product when a member rowed at home, opened the app on their commute, and bought a new accessory from the shop the same evening.

From a Stripe-checkout site to a real platform.

The engagement opened with a website supporting monthly subscriptions to the mobile app. As the project matured, the platform rebranded; the shop expanded to sell rowers, mobile docks, accessories and apparel — multi-currency (USD, GBP, EUR, AUD).

The mobile app initially shipped as a video player with manual time/distance entry. Runtime then integrated Bluetooth via a small communication module compatible with most rowers, enabling real-time data transmission. The 2019 Android release introduced live distance and pace metrics.

For CityRow's tablet-integrated rower, the team redesigned the app for larger screens and implemented an over-the-air update system so the fleet could be patched without service trucks rolling.

A stack that crosses web, mobile, and a rower's tablet.

Three surfaces, one engineering team. The choice of stack reflects the breadth: a frontend for the marketing site and shop, a Python/Django backend, a Node service for the real-time Bluetooth bridge, and React for the embedded tablet.

React Frontend
Python Backend
Django Backend
Node.js Realtime
PostgreSQL Database
AWS Infra

From three developers to a connected fitness platform.

575M m Metres rowed by members on the platform we built and maintained.

Across four years, the team scaled from three developers to nine plus a dedicated QA. The shop went from monthly subscriptions to a multi-currency commerce stack. The mobile app went from a class player to a real-time Bluetooth-driven training companion.

Members average six workouts a month, rowing roughly 275,000 metres over the lifetime of their membership. Every one of those workouts ran on infrastructure shipped, scaled and maintained by Runtime.

Engagement closed in 2022 — relationship preserved.

The partnership wound down in 2022 as CityRow's internal engineering org reached the size where in-house ownership made more sense. Handover ran on the same cadence as the build — runbooks, architecture decisions, knowledge transfer, embedded for as long as it took.