Back to themes

Medice

Config-driven Astro 7 + Tailwind CSS 4 theme for medical practices, clinics, and healthcare groups - with 18 specialties, a filterable clinician directory, clinic pages with structured data, a six-step booking form wired to a real endpoint, a health library, careers board, and pricing, across 60 prerendered pages.


Cost

Paid


Medice is a complete Astro website system for medical practices, clinic groups, and the agencies that build for them - every surface a patient actually walks through, shipped as a working practice rather than a landing page. Pale clinical surfaces, deep ink panels, a restrained sky-blue and mint palette, hairline borders, and Plus Jakarta Sans typography create a calm, credible healthcare identity that is light-only by design.


Patient journeys drive the structure. An 18-specialty index with a symptom router sends 8 common complaints to the right department, a filterable directory profiles 9 clinicians with focus areas, office hours, and reviews, and 4 clinic pages print opening tables that feed their own MedicalClinic structured data, so the schema and the page can never disagree. A six-step booking form reads its visits, clinicians, and insurers from the same price list and roster the rest of the site uses, then posts to a real endpoint (POST /api/book/) with a honeypot, server-side validation, and the Resend email call already written - the one on-demand route in an otherwise fully prerendered build.


It ships as a complete site: 60 prerendered pages including Home, About, 18 specialties with 9 full specialty detail pages, 9 clinician profiles, 4 clinic pages, a six-step booking flow, a derived price list, a careers board with 14 job adverts, a 26-question FAQ across 5 filterable groups, a 10-article health library under clinician bylines with RSS and BlogPosting schema, patient portal sign-in and activation pages, legal routes, sitemap, robots, and llms.txt output, and a custom 404.


Built with Astro 7, Tailwind CSS 4 with CSS-first design tokens, and strict TypeScript - and nothing else at runtime: motion is 87 hand-ported animate-* utilities behind a global reduced-motion guard, and 599 icons live in a typed registry inlined at build time, with no animation or icon library in client JS. All content lives in typed config modules under src/config/ - navigation, homepage, specialties, doctors, clinics, booking, careers, FAQ, pricing, portal copy, legal text, and imagery - each guarded by its own self-check, 23 in total, that run on plain Node with no test framework.


Who it's for

- Private medical practices and multi-location clinic groups

- Specialty clinics: cardiology, dermatology, orthopedics, behavioral health, and more

- Urgent care and family medicine providers

- Dental, physiotherapy, and allied-health practices adapting the same structure

- Agencies and freelancers building healthcare sites for clients

- Any practice that needs booking, doctors, locations, pricing, and patient education in one site


What's distinctive

- A symptom router on the specialty index that sends 8 common complaints to the right department

- Clinic pages whose MedicalClinic opening-hours schema is parsed from the very table the page prints

- A six-step booking form that derives its options from the price list and doctor roster instead of restating them, posting to a real endpoint with honeypot and server-side validation

- 9 clinician profiles emitting Physician structured data with focus areas, office hours, and reviews

- A patient portal sign-in and activation design that is honest about being a door, not a fake login

- 87 animate-* motion utilities and view transitions with no animation library and a global reduced-motion guard

- A dev-only UI catalog at /examples/ui showing all 37 primitives, excluded from production builds

- 23 config self-checks that fail the build if content and pages drift apart


What's included

- Full source: Astro 7 + Tailwind CSS 4 + strict TypeScript, with 9 runtime dependencies

- 60 prerendered pages from 19 routes: Home, About, Services, 9 Specialty Detail pages, Doctors, 9 Clinician Profiles, Book, Pricing, 4 Clinic pages, Careers with 14 role pages, FAQ, a 10-article Health Library, Patient Portal, Privacy, Terms, and 404

- One on-demand booking endpoint with the Resend integration written, behind a swappable adapter - Node by default, with Cloudflare, Netlify, and Vercel drop-ins, or delete it and deploy fully static

- Typed config modules for every surface: identity, navigation, homepage, specialties, doctors, clinics, booking, careers, FAQ, pricing, portal, legal copy, metadata, and imagery

- 89 page sections across 16 groups and 37 documented UI primitives

- JSON-LD throughout: MedicalClinic, Physician, and BlogPosting schema derived from page content

- RSS feed, static sitemap and robots output, llms.txt, canonical and Open Graph metadata

- Self-hosted Plus Jakarta Sans Variable via Fontsource

- Responsive navigation, mobile layouts, keyboard-friendly interactions, and reduced-motion support

- Deploy documentation for Cloudflare Workers plus compatibility with Netlify, Vercel, or any static host

- Lifetime updates for this theme

- Documentation at doc.astrocraftthemes.com/themes/medice