Mujammil
Taking new workStart a build

Clinic platform + CMS/Endovascular clinic/2026live

Dr. Amjad

A clinic platform with a bespoke medical CMS, where SEO metadata and JSON-LD live in the database models rather than being bolted on afterwards.

RoleFull stack developerTimeline3 weeks

Sector
Healthcare
Built in
3 weeks
Editable by
Clinic staff
Admin auth
NextAuth, role-based
Architecture
staff editstructured datapatients landContent modelsSEO + JSON-LD inlineTreatmentsown schemaTeam & servicesown schemaAdmin portalNextAuth, rolesPublic pagesNext.js, staticLocal searchthe real front doorCall / WhatsApptracked as conversions

SEO metadata and JSON-LD are fields on the content model, not template logic. Staff edit a treatment; its structured data updates with it, because there is no second place to forget.

Dr. Amjad — shipped
The Dr. Amjad clinic homepage, cardiac surgery services above the fold, with a booking call to action

The brief

An endovascular clinic with the usual medical-practice website problem: slow, outdated, impossible for staff to change. It needed to build trust before a first visit, be editable by the clinic itself, and rank for local medical searches.

What was actually hard

Three weeks, and the CMS could not be a generic page builder. Treatments, services, team members and posts are different shapes with different SEO requirements. Bolting schema markup on at the template layer means it goes stale the first time a nurse edits a page, so it had to be part of the data model itself.

Decisions

What I decided,
and why.

  1. 01

    SEO and JSON-LD live in the model

    Title, description, keywords and structured data are fields on the content itself, not template guesswork. When staff update a treatment page, its schema markup updates with it, so there is no separate step to forget.

  2. 02

    A schema per content type

    Treatments, services, team members and blog posts each got their own shape rather than being forced through one generic page type. It costs more up front and is why staff can actually maintain it.

  3. 03

    Four fields, not eight

    Patients were dropping off on the booking form. Halving the fields and adding a progress indicator addressed it. In healthcare every extra field has a real cost, because the person filling it in is already anxious.

  4. 04

    Tracked the taps that matter

    WhatsApp and call taps are tracked as conversions. For a clinic those are the actual outcome. A form submission is the minority path.

Where it stands

Live, with the clinic managing all of its own content. Built and shipped in three weeks.

Built with

  • Next.js · React 19
  • TypeScript
  • Prisma ORM
  • MySQL
  • NextAuth.js
  • Tailwind v4
  • Framer Motion
  • Radix UI

Need one of these,
under your name?

Most of what I build reaches the end client with somebody else's logo on it. If that is the arrangement you want, say so in the first message.