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
- Live site
- reveralabs.co.za (opens in a new tab)
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.
- QuestionnaireSeven short sections on history, anything taken now, and how they live.
- Video consultA booked slot with their own doctor, afternoons, evenings or weekends.
- PrescriptionWritten by the doctor after the call, issued as a signed PDF and kept in the account.
- OrderPrescription items are made up by a licensed partner pharmacy, then sent on in plain packaging.
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.
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.