All work

Revéra Labs

A doctor-led telehealth service for South Africa: a medical questionnaire, a video consultation with a named doctor, and a shop where prescription items are ordered only against the doctor’s prescription.

Client
Revéra Labs
Location
Johannesburg, South Africa
What we built
Telehealth platform · video consultations · prescription-gated shop
Stack
Next.js · PostgreSQL · LiveKit · Caddy
The Revéra Labs home page: “Feel like yourself again”, with a phone showing “What do you want to work on?” beside a smiling woman, and buttons to talk to a doctor or shop supplements.
The Revéra Labs home page on a phone: “A health questionnaire, done on your phone”, with the site’s illustration of the questionnaire’s last step.

Doctor-led, online

Revéra Labs is a prescription-tailored health and wellness company in Johannesburg. Its doctor-led telehealth service starts with a medical questionnaire, then a video consultation with a named, HPCSA-registered doctor, who builds a personal plan. Anything in that plan that needs a prescription can be ordered only against the one the doctor wrote.

Revéra asked for the whole thing: accounts, the questionnaire, doctor booking, video consultations, electronic prescriptions, an online shop, payments and delivery. We built it as one platform on one database, because the hardest question it answers, “may this patient order this?”, depends on clinical records and the shop at the same time. Kept together, that question is a single check rather than a sync between two systems that can drift apart.

  • 7 questionnaire sections up to 30 questions, 7 asked only when they apply
  • 7 days a week of video consults weekday afternoons and evenings, and weekends
  • 5 roles, each fenced in patient · doctor · pharmacist · admin · information officer
  • 1 database for care and orders stored in Johannesburg

Source: the site and the platform’s source, October 2026.

From a questionnaire to the door

The journey is short on the patient’s side and careful on ours. The doctor has read the questionnaire before the call, so the consultation starts with what matters to the patient, and every step after it shows in their account.

  1. QuestionnaireSeven short sections on history, anything taken now, and how they live.
  2. Video consultA booked slot with their own doctor, afternoons, evenings or weekends.
  3. PrescriptionWritten by the doctor after the call, issued as a signed PDF and kept in the account.
  4. OrderPrescription items are made up by a licensed partner pharmacy, then sent on in plain packaging.
The six steps on Revéra’s How it works page: create your profile, complete your health questionnaire, meet your doctor by video, your plan made for you, order what supports your plan, and follow-up and ongoing care.
The home page’s illustration of order tracking, “Each step shows in your account”: payment received, being made up, arrived at the practice, on its way, delivered.
The home page’s order-tracking illustration

The whole service in six steps, as patients see it.

A named doctor, a real calendar

Every consultation is with a doctor checked against the HPCSA register, shown with their qualifications and registration number. Each doctor sets their own weekly hours, leave and slot length, and patients pick from the times that are actually free.

Booking is built into the platform, not rented from a scheduling service, so the calendar lives in the same South African database as everything else. Double-booking is ruled out by the database itself: if two patients reach for the same slot at the same instant, only one booking can be saved. Each booking opens its own video room, and only the two people in it can join, from ten minutes before the start.

No prescription, no order

A prescription-only item never reaches an order on its own say-so. At checkout, as the order is created, the platform checks again on the server that the patient holds a valid prescription written by their doctor, and a patient without one is invited to book a consultation instead. Because the check runs then, a change between adding an item to the basket and checking out can never slip a prescription item through.

  • The doctor decides. Questionnaire answers raise flags for the doctor to review; they never quietly turn a patient away.
  • Rules as data, not code. What each flag means is held as rules a registered clinician writes and signs off; the launch set is being drafted with Revéra’s doctor now.
  • A partner pharmacy. Prescription items are made up by a licensed partner pharmacy, and each order is held until that pharmacy accepts it.
  • A signed script. Each prescription is issued as a signed PDF that can be checked as genuine later.

Private by design

Medical records call for more care than an ordinary shop. The platform runs on one server in Johannesburg, video included, so personal and clinical information is stored in South Africa, in line with POPIA. Who may see what is enforced by the database, not by remembering to filter: a patient sees only their own records, and a doctor only their own patients.

Consultation notes are encrypted before they are stored. Security-relevant events go into an audit log that can only be added to, with each entry sealed to the one before, so any change would show. Patients can sign in with a passkey, and doctors and staff must use two-factor sign-in. An Information Officer handles POPIA requests, and patients can request their data from their account.

The Revéra Labs sign-in page: email and password fields, a Sign in button, and a Use a passkey option, beside the line “Whole-person care, led by your own doctor.”
The sign-in page on a phone, with email and password fields and a Use a passkey button.
Sign-in, on a phone

A password, or a passkey from the phone in your pocket.

The result

The platform runs at reveralabs.co.za ahead of its public launch: a public site that explains the service, and behind it accounts, the questionnaire, booking, video consultations, prescriptions, the shop, payments in rand and order tracking to the door. Prescription ordering is in its final checks. Every release is checked automatically before it goes out and rolls itself back if the site fails its health check.

For engineersRow-level security, booking, video and the stack

Row-level security. Every table that holds a person’s data has ENABLE and FORCE ROW LEVEL SECURITY, and requests connect as a role that is NOSUPERUSER, NOBYPASSRLS and owns no tables, so the policies bind even where an owner would be exempt. Migrations run as a separate owner role.

Booking. Appointments are tstzrange rows guarded by an EXCLUDE USING gist constraint on doctor and time, so two overlapping inserts cannot both commit; the loser gets 23P01. Weekly templates and leave carry their own exclusion constraints.

Video. One self-hosted LiveKit server behind Caddy. A join is authorized before a token is minted: the right party, a live booking, and a window from ten minutes before to thirty after. Tokens are short-lived and good for one room, and room names are salted hashes, so no personal information travels with the call.

Records. Clinical notes are stored only as pgcrypto ciphertext, with the key passed as a bound parameter and never written to the database. The audit log is append-only and sha256 hash-chained by trigger.

Stack. Next.js App Router and TypeScript on PostgreSQL with Drizzle; WebAuthn passkeys and TOTP; argon2id passwords; an Astro site for the public pages; Caddy on an Xneelo server in Johannesburg, with nightly backups. Vitest unit and integration suites run against a real PostgreSQL with the policies in force, alongside Playwright end-to-end journeys and axe accessibility checks.

A telehealth service that feels simple to the patient, and keeps its promises in the database: the right doctor, the right records, and no prescription item ordered without a prescription.

Building something where the rules really matter?

Health, money, anything regulated. Tell us what has to be true every single time, and we’ll build the software that makes it true by design, not by hoping.