From “Can I book?” to a working clinic operating system.
When I started Nivora for the #lovablechallenge, I deliberately didn't begin by building screens.
I started with the business journey — what happens before a booking, when a patient arrives, during consultation, when treatment is required, and what happens afterward.
Then I built it stage by stage:
01 — Foundation
Supabase, design system, routing, patient/clinic separation and security foundations.
02 — Clinic administration
Authentication, clinic settings, roles, lightweight RBAC, staff management and configurable Masters.
03 — Patient booking
Premium booking experience, five-step flow, real availability, confirmation receipt and secure appointment management.
04 — Patient portal
Passwordless access, record claiming, appointments, payments and patient-safe clinical summaries.
05 — Reception operations
Scheduled and walk-in appointments, patient directory, patient details, check-in, queue, cancellation and no-show handling.
06 — Consultation & billing
Consultation invoices, payments, waiver/defer/refund workflows, dentist waiting queue, consultation workspace, drafts, finalization, outcomes and append-only corrections.
07 — Treatment workflow
Treatment plans, patient decisions, procedure scheduling, session execution, progress tracking and patient-safe updates.
The important part is that these aren't isolated screens.
Each stage extends the same underlying workflow — with defined states, permissions, availability rules, server-side validation and protected clinical boundaries.
The result:
Patient: “Your visit is booked.”
Clinic: “Routine bookings are running automatically.”
That's the loop I wanted to close.
Completed through Stage 07.
Database verification: 264/264
Application tests: 180/180
Next: the remaining operational pieces, final end-to-end verification, and polish.
Building Nivora has become less about adding screens and more about making every step of the real clinic journey actually connect.
#lovablechallenge
Design @ Lovable Social @ Lovable Head of Product @Contra! @Lovable