HOLLOW POINT
Contact
Track A — Web build

Bespoke Next.js + Sanity website for a UK ultrasound clinic

NELS Ultrasound is a UK private ultrasound clinic. We built their website end-to-end on Next.js 16, Sanity, and Vercel — a bespoke healthcare site designed to handle private patient bookings, communicate the clinical service offering clearly, and meet the trust and performance expectations of healthcare web users.The site sits in a quieter case study position than the Shopify ones — it’s not a multi-£m revenue story or a 7,000-variant catalogue. But it’s a clean illustration of what the engineering looks like when the brief is “build the digital surface this professional services business will run on for the next five years” rather than “automate this ecommerce workflow”.Different vertical, same engineering pattern: deeply embedded with the client team, custom-built rather than templated, owned by the client at the end.

The brief

NELS came to us with a familiar mix of constraints for a private healthcare brand:
  • A clear clinical service offering that needed to be communicated without medical jargon and without crossing into anything that might be read as advertising regulated treatment outcomes
  • Patient enquiry and booking flow that needed to feel reassuring and professional (private patients pay out of pocket — the website is part of the trust-building)
  • A team that could update content without breaking anything (no in-house developer)
  • Performance and accessibility taken seriously from the start, not bolted on later
  • Hosting and ongoing maintenance handled by the consultancy so the clinic doesn’t need a tech team
Healthcare websites get this wrong constantly. Either they’re thrown together on a generic builder and look amateur, or they’re over-engineered with custom CMSes nobody can update. The brief was to land in the middle: bespoke build, but with content workflows the clinic’s team can own.

Why Next.js and Sanity for a clinic website

Three reasons this stack fit the brief specifically.

Performance and Core Web Vitals from day one

Healthcare websites have higher trust requirements than most commercial sites. A page that loads slowly, jumps around as it loads, or feels janky on mobile undermines the trust signal that makes patients pick up the phone or fill in the booking form. Next.js with proper image optimisation, server components, and Vercel’s edge network gives a performance baseline that’s hard to match on builders or generic CMSes.

A content model the clinic team can own

Sanity’s Studio interface is genuinely usable for non-developers. We modelled the content schema around the clinic’s actual editorial needs — services, FAQs, clinician profiles, articles, locations — with validation rules that prevent common mistakes (broken links, missing alt text, untyped fields). The clinic team can add a new service page, update a clinician’s profile, or publish an article without touching code or risking the site.

Hosting that just works

Vercel handles deployment, scaling, edge caching, and most of the infrastructure work that would otherwise need ongoing attention. The clinic doesn’t need to think about hosting. Updates push automatically. The cost is predictable.

What we built

The public site

Marketing pages covering the clinic’s services, locations, clinician profiles, FAQs, and patient information. Every page generated from Sanity content with strict templates so the editorial team can publish freely without breaking layout or accessibility.The pages render server-side for SEO and performance, with selective client-side interactivity (the booking widget, FAQ accordions, gallery lightboxes). Image-heavy content (clinic photography, scan examples used with permission) is optimised through Vercel’s image pipeline.

The booking flow

Private patient enquiry and booking is the single most important conversion path on a clinic site. We built a custom flow that handles service selection, location selection, time slot preferences, and patient information capture, with structured handoff to the clinic team for follow-up.The flow is deliberately not a fully self-service booking system — for healthcare, a human touchpoint between enquiry and confirmed booking is appropriate (patient details to verify, suitability questions, sometimes a clinical pre-screen). The flow captures everything the clinic needs to follow up confidently in their existing process, without forcing the clinic to adopt new booking software.

Content architecture in Sanity

The Sanity schema was designed alongside the clinic team to match how they actually think about content:
  • Services as a top-level type with structured fields (description, indications, what to expect, pricing where appropriate)
  • Locations with their own pages, opening hours, contact details, embedded maps
  • Clinicians with profiles, qualifications, and which services they perform
  • Patient information articles for the editorial side
  • Reusable FAQ blocks that can be attached to any service or location
Cross-references between types are handled through Sanity references, so a clinician profile automatically lists the services they perform, and a service page automatically lists the clinicians who offer it. Edit one record, the changes propagate.

Compliance and trust signals

Healthcare sites have specific trust expectations: clear identification of the regulated entity, transparent contact details, qualifications visibility, privacy and data handling. The site handles all of these through structured Sanity content, with the layout components designed around healthcare-typical trust elements (clinician credentials prominent, regulatory body references where applicable, clear contact and complaint pathways).Cookie consent, privacy policy, and accessibility are handled to UK GDPR and WCAG 2.1 AA expectations. None of this is dramatic engineering — it’s just done properly, which is what most healthcare sites of this size don’t do.

Tech stack

For prospects evaluating fit:
  • Frontend: Next.js 16 (App Router), React 19, TypeScript end-to-end, Tailwind CSS
  • CMS: Sanity for structured content with custom Studio configuration
  • Hosting: Vercel for the application, Sanity Content Lake for structured data
  • Forms / booking: custom server-side handling with email + structured CRM-ready output
  • Analytics: Vercel Analytics + privacy-respecting site analytics
  • Auth: Sanity Studio uses standard SSO; no public-facing auth on this site
Roughly 8 weeks from kick-off to a launch-ready build, with iteration cycles in between for clinic team feedback.

Status and what’s next

The site is built and currently in its final review phase with the clinic team before public launch. Once launched, we’ll layer in:
  • Local SEO work for the locations the clinic operates from (Track B services applied here)
  • Structured data for medical organisation, clinician profiles, and service offerings — all schema types Google supports for healthcare entities
  • Ongoing content support as the clinic adds services and locations
The site was built with SEO foundations in place from launch — proper schema, clean URL structure, server-rendered HTML, page-specific metadata, accessible markup. The local SEO and content workstreams compound on those foundations rather than retrofitting them.

What this means for non-ecom prospects

If you run a professional services business — clinic, finance firm, agency, consultancy — and you’re considering a custom website rather than a builder template, this is roughly what the engagement looks like.Same engineering pattern as our Shopify and AI engineering work: embedded with your team, custom build, content architecture you own, deployed on infrastructure that doesn’t need a tech team to maintain. We work in the verticals where the website is part of the trust offering rather than a marketing asset bolted onto a phone number.If that sounds like the kind of build you’re considering, the conversation is worth having. We typically have one or two non-ecom builds running alongside the Shopify work at any given time.