Skip to content
All work
Web2026

The same clinic platform, rebuilt around a different doctor with a different identity — proving the product adapts rather than repeats.

Dr Hassan El-Hefnawy — Cardiology
  • RoleFull-stack engineer & designer
  • Year2026
  • Built with
    • Next.js
    • TypeScript
    • Prisma
    • PostgreSQL
    • jose
    • Zod

What was wrong

One clinic site is a project. Two is a question: is the second one a copy with the colours swapped, or does the thing underneath actually generalise? A template would have forced this doctor into the first clinic's layout and typography.

What I did

The engine is shared — booking, dashboard, permissions, RTL, dark mode, SEO — while the identity is not. This one runs its own eight-section layout on IBM Plex Sans Arabic with a teal and sand palette, independent of the other clinic in look and in content.

What changed

A second clinic went live without inheriting the first one's design decisions, which is the only real test of whether a platform is a platform.

What is inside

  • Cardiology services in detail

    Consultation, echocardiography, stress ECG, 24-hour Holter, routine follow-up and pre-operative assessment.

  • Managing the bookings

    Tracking, filtering, status changes and internal notes, plus adding a booking by hand for whoever called in.

  • A patient record that builds itself

    Assembled automatically from bookings with the phone number as the identifier — no double entry, no file created by hand.

  • A wholly independent identity

    IBM Plex Sans Arabic, a teal-and-sand palette and its own eight-section homepage — sharing neither look nor content with the other clinic.

  • Light and dark

    The site follows the visitor’s preference, and both modes are designed rather than derived by inverting colours.

  • Separate database, separate deploy

    Its own codebase, its own database and its own deployment — neither clinic can take the other down.

From the build

A walkthrough of 9 screens, from the site and the dashboard.

  1. The clinic’s services
    The clinic’s servicesSix cardiology services on their own cards — stress ECG, echo, consultation, pre-operative assessment, routine follow-up and 24-hour Holter.
  2. The services list
    The services listThe full page with durations and prices, each card opening its own explanation for anyone who wants detail before booking.
  3. The echo page
    The echo pageWhat the scan finds, how long it takes and how to prepare for it — in a patient’s language, not a report’s.
  4. Booking an appointment
    Booking an appointmentThe same flow as the other clinic, running on this clinic’s own availability rules and service durations.
  5. The articles
    The articlesPieces on heart-healthy habits, chest pain and blood-pressure numbers — written by the doctor from the dashboard.
  6. About the doctor
    About the doctorThe biography and qualifications, with four figures: patient satisfaction, catheterisations, patients followed and years of practice.
  7. Dashboard — overview
    Dashboard — overviewToday’s and this week’s bookings, what is still pending, revenue from completed appointments and incoming messages — on one screen.
  8. Dashboard — services
    Dashboard — servicesSix services with their prices and durations, added, hidden and reordered from right here.
  9. Dashboard — site content
    Dashboard — site contentIdentity, homepage headline and strapline. Nothing on the public page is written into the code.
Next

The Copywriter Camp

Still reading?

Then we should probably talk. Thirty minutes, free, no slide deck. Worst case you leave with a second opinion.