
Physion
Heilbronnphysion.hnPhysion is a physiotherapy practice in Heilbronn with ten therapists, twenty-two treatments and its own app. Its Webflow site carried all of that and took 26 seconds on a phone to show the first image. Patients in pain do not wait that long. We rebuilt the whole thing, page for page, in Astro.


The question
How do you rebuild a site with five content collections without asking the practice to retype a single word?
The old site was not thin. Twenty-two therapies, ten team members, four success stories, ten articles, thirteen Google reviews. All of it lived in Webflow's CMS, and all of it had to arrive in the new one intact, with the same URLs, so a decade of search results would still find their page. That constraint shaped everything else.

The work
Nothing was copied across. Every section was rebuilt from Lumos components on Physion's own tokens: their red, their Lato, their Inter. The Webflow stylesheet, 252 KB of it, was not carried over at all. That is why the new site weighs 381 KB where the old one weighed 7.5 MB.
The content moved into Sanity as five collections plus the reviews that had been hardcoded in the old markup. Every CMS field maps to a field the practice actually fills in, and long texts are written in an editor that works like Word, not in HTML.
Motion is Osmo, wired to the scroll rather than to timers: smooth scroll, parallax on the hero images, reveals per section, a mega navigation with image cards. All of it switches off under reduced motion, and none of it is what makes the page slow, because none of it blocks the first paint.














What shipped
Fifty-nine pages from fourteen page types, five content collections, a text editor for the practice team, fifty-one old addresses kept as they were and eighteen redirects for the rest, a nightly CMS backup and a build check on every push. Measured page by page on the same phone profile as the old site.

The rebuild runs on Astro, Sanity and Lumos, with Osmo motion modules, hosted on Netlify. Sanity Studio lives on the site itself under /admin. When the practice hits publish, a build starts and the change is live 54 seconds later. A Cloudflare Worker handles the forms, with Turnstile against spam. Content is backed up nightly to GitHub, and every push runs a type and build check.

00:00
/
00:00





