A bilingual medical practice site for a Zurich clinic. Sanity-driven, EN/DE, designed around the consultation funnel — quiet typography, clear pathways, no stock-photo theatre.
The clinic positions itself differently from the bulk of Swiss medical practices: structured patient pathways, longer consultations, evidence-led plans rather than reactive prescriptions. The old site read like every other clinic — stock imagery, generic service grid, no real differentiation. The new site needed to make the positioning legible inside ten seconds, in two languages, with the team able to publish without a developer in the loop.
Marine palette, restrained motion, serif italic accents on the positioning lines (“Structured guidance, not reactive healthcare”). Hero is text-led, not photo-led — patients read the difference before they see a face.
Each service card has its own dedicated route with the same treatment as the home — eyebrow / headline / body / what to expect / book consultation. Cross-linked, single source-of-truth in Sanity.
next-intl 4.x for routing and copy, Sanity internationalisation for the editorial content. Locale picker in the navigation, locale-prefixed URLs, hreflang in the head. Editors write each language separately — no machine translation.
revalidate=60 on the home + service pages. Editor saves a copy change in Sanity, the next page request after 60 seconds rebuilds with fresh data — no deploy, no manual cache flush. Practitioner profiles, FAQs, and consultation details all flow the same way.
Site delivered in under two weeks. Content team self-sufficient from launch — Sanity Studio in their workflow, no tickets to me for copy edits. Hero positioning rewritten three times without a code change. Lighthouse mobile in the high 90s, Core Web Vitals all green. Owner's favourite line: “The site finally sounds like us.”
Next.js 16 App Router · Sanity CMS · next-intl 4.x for EN/DE routing · ISR revalidate=60 for editorial content · Resend for contact form · Tailwind v4 · Vercel auto-deploy on push
