Case studiesWeddings
ryan-wilkins.com
Our founder's own wedding website: a private invitation that opens with a film each guest flies through by scrolling, then takes the RSVP, the menu choices and the questions. Every guest has their own link, and all of it still works with JavaScript switched off.
Outcome
frames in an invitation film each guest scrolls through
Client
Industry
Region
Services touched
- Web
- Content
01The challenge
An invitation worth opening, for every guest and every phone.
This one is personal. Our founder, Michael Wilkins, built the website for his own wedding: a private, invitation-only site that is the digital invitation, the RSVP, the menu and dietary form, the schedule and the couple's story in one place.
The idea was an invitation that feels like being flown somewhere. One continuous flight in a gold engraved style: above the clouds, down through them to a city, along its river at dusk, up a tree-lined drive to a château, where the couple's two dogs break the wax seal on an envelope and the guest's own invitation settles over it.
The difficulty is everything around the idea. A film that follows the scroll is exactly the kind of feature that breaks on a real guest list: older phones, patchy connections, people who have motion switched off, and relatives who just want the facts. And because it is a wedding, every guest's details had to stay private.

02The approach
A film drawn frame by frame as the guest scrolls, with a plain invitation underneath.
The film is not a video. It is 288 still frames in AVIF, about 57 KB each, painted onto a canvas, and the frame on screen depends on how far the guest has scrolled. The page uses the browser's own scrolling, with no smooth-scroll library and no wheel handler. A damped playhead and a cross-fade between frames keep it gliding however hard the guest scrolls. Every eighth frame loads first, so the whole flight can be scrubbed coarsely almost at once, and the rest fill in around the playhead: the first load asks for 58 of the 288 frames, about 3.7 MB, and frames left far behind are released from memory.
Underneath the film is a complete typeset invitation, and the film only takes over once it is running. With JavaScript off, on a data-saving connection or on 2G, the guest gets that document: the facts, a link to watch the film and the RSVP. Under reduced motion the film still follows the scroll, because it moves only when the guest does, but its automatic push-in at the end is switched off. That was a deliberate reversal. The first version gave those visitors a still page, and the couple, who both have the setting on, found they were missing half the site. Phones get the same flight as a 39-second film that plays itself and ends on a still identical to its last frame, so the invitation card can settle over it. A link that skips straight to the invitation is the first thing a keyboard reaches.
The pictures were generated with AI image and video models and then cut by hand. Seven stills were approved first as a storyboard, and each of seven clips was generated to start on one approved still and end on the next, so the chapters join on the same picture.
Each party of guests has one private link, and nothing but a holding card is public. The link signs the guest in afresh every time it is opened, so there is no password to forget. The data sits in a Postgres database with row-level security on all 17 tables, and the RSVP and menu forms are plain form posts that work without JavaScript.

03The result
The invitations went out, and nobody on the guest list was left out of them.
The site took 230 commits to build, and when the formal invitations went out, each one was addressed to its guests by name.
It was checked the way we would check a client's site. The project's own accessibility sweep with axe found no violations across nine pages. In Lighthouse, run five times on each device on 11 November 2026, the public holding page scores 100 for Accessibility and for Best Practices in every run, with Performance of 98 on desktop and 79 on mobile, both medians. The site is deliberately kept out of search engines, so there is no search result to report and there never will be.
A wedding website is not a commercial project and there is no revenue figure to put on it. What it shows is the standard of the work when the brief is ours alone: one signature experience, engineered so that every guest could open their invitation, whatever they opened it on.
still frames, drawn to a canvas as the guest scrolls
Frames in the film
288Frames requested on first load
58Accessibility
100Best practices
100Performance · desktop
98Performance · mobile
79Frame counts and sizes are from the site's repository, and the first-load figure was measured on a local copy on 11 November 2026. Lighthouse 13.6.0 was run from our own machine against the public holding page on the same day, five runs per device: Performance 79 on mobile (runs of 79 to 86) and 98 on desktop (96 to 99); Accessibility and Best Practices 100 in all ten runs. The site is noindexed on purpose, so Lighthouse's SEO category does not apply. Guest pages sit behind private links and cannot be tested from outside; the axe sweep is the project's own.
The deeper outcomes
Behind the headline metric.
- 288 AVIF frames drawn to a canvas and driven by the browser's own scroll: no video scrubbing, no scroll library
- The first load asks for 58 frames, about 3.7 MB, and the whole flight can be scrubbed almost at once
- A complete typeset invitation underneath: the site works with JavaScript off, on data saver and on 2G
- Reduced motion gets the whole site in a calm mode, not a reduced copy of it
- Phones get the flight as a 39-second film that ends on a still identical to its last frame
- One private link per party of guests, and row-level security on all 17 database tables
- RSVP and menu forms that post without JavaScript
- No accessibility violations across nine pages in the project's own axe sweep
In the work




What's next
The technique carries over to client work: a film as a sequence of frames on a canvas, with a complete page underneath it for anyone who cannot, or would rather not, watch it. The same care goes into who is left out by a feature as into the feature itself.
Related
Other engagements that ship the same kind of outcome.
Start
Want this kind of outcome for your business?
Tell us what you're trying to grow, then choose how to continue: a 30-minute call with Michael Wilkins, our founder, or a conversation with our AI strategist that ends with a written scope. No obligation either way.
