
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 35 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 every rich text passes an allowlist sanitiser before it renders.
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
Fourteen page types, five content collections, a sanitised rich text pipeline, thirteen inherited redirects plus the new ones, a nightly CMS backup and a build check on every push. Measured on the same phone profile as the old site.

The rebuild runs on Astro, Sanity and Lumos, with Osmo motion modules and a Cloudflare Worker for the assets. Content is backed up nightly to GitHub, and every push runs a type and build check before anything reaches the branch.






