Ruch Kontrolowany

SoGnare · case

Ruch Kontrolowany

Full product system for Hubert Myszka’s rehab brand — marketing site, patient/trainer web platform, native iOS + Watch, Vald-backed diagnostics narrative, bookings, plans, and Strava/HealthKit.

  • Next.js
  • SwiftUI
  • watchOS
  • Supabase
  • TypeScript
  • TanStack Query

Ruch Kontrolowany is not a landing page with a contact form. It is an end-to-end product for orthopaedic rehab in Warszawa Bemowo: public brand, conversion flows, and a living training platform where patients and trainers share the same source of truth.

The problem

Hubert’s work is built on “mierzymy, nie zgadujemy” — VALD measurements, ACL-focused rehab, and objective re-tests. That story falls apart if the website is a brochure and the training life lives in WhatsApp, PDFs, and spreadsheet plans. The brief was to make the brand and the product feel like one system.

What shipped

A pnpm monorepo with three surfaces that share domain packages and Supabase.

Marketing & acquisition

The public site at ruchkontrolowany.com.pl carries the brand voice: oferta, kim jestem, opinie, zdjęcia, kontakt, blog, and reservation entry points. It sells diagnostics, terapia ruchem, and hybrid collaboration — then hands people into the platform instead of dumping them into email.

Web platform (patient · trainer · admin)

The Next.js dashboard is role-aware. Patients live in my-plan, my-sessions, my-bookings, my-calendar, measurements, messages, Strava, and free-workout flows. Trainers get patients, planning, training-plans, live sessions, activity, and quick-entry. Admin sits on top for operations. Auth, settings, and social pieces round out the app shell.

Native iOS · Watch · live workout

SwiftUI apps for patient and trainer, plus Watch and workout activity targets. HealthKit and Strava keep real training data in the loop. Live workout UX is first-class on device — not a thin WebView of the panel.

Architecture & craft

  • Shared @rk/domain and @rk/supabase packages so web and iOS speak the same model.
  • Supabase migrations + RLS as the source of truth (applied deliberately, not auto-pushed).
  • TanStack Query on web for all client data; @Observable ViewModels on iOS.
  • Playwright (web) and Maestro (iOS) as a hard ship gate for user-facing features.
  • Sanity studio embedded for content where the brand needs editorial control.

The result is a product spine: marketing that converts, a platform that runs the collaboration, and native apps that make the daily session feel serious. Same brand, same data, three clients.

  • Shipped a three-surface product: marketing site, role-based web platform, and native iOS/Watch apps on one Supabase backend.
  • Patient and trainer dashboards covering plans, sessions, bookings, calendar, measurements, messaging, live workouts, and Strava.
  • Brand site that sells diagnostics / terapia ruchem / hybrid work and routes into the platform.
  • Shared domain packages + Playwright/Maestro gates so features land tested on both platforms.
← All work