08 / Practice site

Kwandengezi Medical Centre

A GP practice website with local SEO built in, and a patient form builder so information is collected before the patient reaches the desk.

Year
2025
Status
Live.
The Kwandengezi Medical Centre home page: 'A doctor near you in KwaNdengezi' over a photograph of the practice.

The problem, stated properly

The practice has been running since the early 2000s with no real online presence beyond a Facebook page. Two things were needed: somewhere for people searching 'doctor near Kwandengezi' to land, and a way to collect patient information before the patient is standing at the desk.

The form builder exists because the alternative was paying per response for something the practice fills in a few hundred times a month. Patients fill forms one question at a time on any phone, no account needed. Staff build them, share the link over SMS, WhatsApp or a QR code, and export responses.

The rule that shaped it

Raw IP addresses are never stored.

POPIA applies to health data, so a few things are enforced in code rather than policy: only an irreversible hash of the IP, used for rate-limiting; a password-gated staff area with auth-gated export; responses purged on a schedule, with the retention query written down in the README rather than left to memory.

The services page.
Services. Each page targets the condition or service plus the suburb, and is indexable the moment it exists.
The team page.
The team: the GP, the on-site dentist, optometrist and pharmacy.

What it is built from

  • Next.js 14
  • Neon Postgres over HTTP
  • Generated sitemap and robots
  • Leaflet for the map
  • Vercel

Known limits

Stated plainly, because a client should know what they have.

  • One shared staff password; no individual logins or roles yet.
  • No brute-force limiter on the admin login; the mitigation is a long password.
  • No email on a new response. Someone has to open the dashboard.

Need something like this to run on?

A thirty-minute call, then a written scope within five business days. No obligation either way.

Start a project
Call
30 minutes
Scope
5 business days
Build
Weeks, in the open