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






