← All work

Ricorda

One record, two apps, live on iOS and Android.

Status
Live on App Store & Google Play
Year
2026
My role
Founder, engineer, everything else
Stack
Flutter, Dart, Firebase, Cloud Functions, React, Stripe

The problem

Treatment notes, agreements and aftercare live in whatever tool a practitioner happens to use, whether that is paper, WhatsApp or a spreadsheet. The client keeps almost none of it. The record that matters most disappears the moment the appointment ends.

How I approached it

Two focused apps around one connected record. Ricorda Studio carries the practitioner workflow: sessions, documentation, agreements, progress photos, aftercare. Ricorda ID gives the client a private passport of their own history, delivered by the professionals they actually visit. A shared Dart package keeps the domain model, design tokens and components identical on both sides, so the two apps cannot drift apart.

What I built

  • Ricorda Studio for practitioners and Ricorda ID for clients, both Flutter, both platform adaptive: Cupertino and glass morphism on iOS, Material 3 on Android
  • Shared Dart package for models, services, design tokens and widgets, with no code generation in the app build
  • Privacy first data design: UK hosted infrastructure, encrypted clinical details, role based access, invitation gated practitioner onboarding
  • Firebase backend with Firestore in eur3, Cloud Functions on Node 20, email OTP auth via Resend and Google Sign In
  • Marketing site and admin surface in React, with live Stripe checkout
  • Company, D-U-N-S, App Store and Play organisation accounts, store listings, screenshots and legal pages, which is the unglamorous half of shipping

Where it stands

Released in June 2026 and shipping continuously since. Currently v1.0.7 on iOS, with both apps published under UNKNWN LABS LTD on the App Store and Google Play, and live payments running through Stripe.

What it taught me

Building a two sided product alone forces brutal prioritisation. The design system and the shared package were the highest leverage decisions I made. Everything after them cost half of what it would have.