CTCarl Tracy
All work
2026

Mancunian Way Driving School

The same website built twice, so the choice is about engines.

The real thing, running here. Hover to scroll it, or click to use it — Escape stops.

Two websites, one brief

The ask was for a site with a back end to log into and update, and a site without one, so the choice could be made by looking at both rather than by reading a description.

So both were built, from one file of copy. content.py holds every word; the static generator renders it to flat HTML, and the same file emits the JSON the app seeds from. The two builds are the same website. The decision is about engines.

Static App
Stack Python → flat HTML TypeScript, Express 5, SQLite
Hosting Any static host, or a USB stick A VPS, Fly.io, a Pi
Cost £0 ~£4–6/month
The form Hands the message to your email app Posts to the server, read in an admin area
Changing a price Edit, rebuild, re-upload Log in on your phone, type, save
Spam protection None possible Honeypot, timing check, rate limit
What can break Nothing A server, a database, a certificate

The recommendation was static first, and move to the app when reading enquiries in an inbox becomes annoying — or when the back end is wanted as a portfolio piece in its own right, which may be the honest reason to build it.

The animations

Two things had to feel right rather than merely move.

The L-plate hangs on a string with a knot, and three animations stack: the string sways, the plate swings from the knot, and the plate twists on its own Y axis through an irregular 7.2-second cycle. The irregularity is the entire trick — an even rotation reads immediately as a turntable and stops being wind.

The cars are five SVGs in four lanes at different depths, speeds and delays, with centre lines scrolling at two rates behind them and a streetlight sweep across the band. The lead car is the school car, roof sign and L plate on the boot.

Both respect prefers-reduced-motion, and there is a Motion on/off toggle in the footer that remembers the choice. The media query catches people who have configured their system; the toggle catches everyone who has not but still finds it too much.

The page that matters most

The About page states that all three parts of the DVSA qualification are not yet taken.

That is not modesty. A trainee instructor on a pink licence presenting as a fully qualified ADI with a green badge is a real problem, not a presentational one. The page says where things stand and it stays that way until there is a badge — which is the same reason the Reviews page marks its four reviews as placeholders rather than quietly implying they are real.

Refinements

How it changed

Every pass, dated, oldest first — nothing trimmed and nothing tidied out. The version that got rejected is usually more informative than the one that shipped.

8 entries·scroll sideways

8

  1. Started
    Built it twice rather than guessing which was wanted

    The brief was one site with a back end to log into and one without, so the choice could be made by looking. Both were built and both were run. The trap this avoids is the usual one — picking an architecture from a description, discovering the trade-offs afterwards, and then being too far in to change.

    Functionality
  2. Changed
    One source of copy, two engines

    Every word lives in `content.py`. The static generator renders it to flat HTML; the same file emits the JSON the app seeds from. So the two builds are genuinely the same website, and the comparison is about hosting, cost and what can break — not about which one has better text.

    Functionality
  3. Note
    The comparison, written down rather than argued

    Static: any host, £0, nothing to break, and changing a price means editing a file and re-uploading. App: a VPS at £4–6/month, a server and a database and a certificate that can all fail, and changing a price means logging in on your phone. Spam protection is only possible on one of them. Recommendation was static first, move when reading enquiries in an inbox becomes annoying.

    Functionality
  4. Changed
    The L-plate had to twist, not spin

    A real two-sided plate on a string with a knot, with three stacked animations — the string sways, the plate swings from the knot, and the plate twists on its Y axis through an irregular 7.2-second cycle. The irregular cycle is the whole trick: an even one reads instantly as a turntable and stops looking like wind.

    Style
  5. Changed
    Cars with depth, not a loop

    Five SVG cars in four lanes at different depths, speeds and delays, crossing an asphalt band under the hero, with centre lines scrolling at two speeds and a streetlight sweep. The lead car is the school car, roof sign and L plate included. A thinner version of the band doubles as a section divider.

    Style
  6. Changed
    A motion toggle, not just a media query

    Both builds respect `prefers-reduced-motion`, but there is also an explicit Motion on/off control in the footer that remembers the choice. The media query covers people who have configured their system. The toggle covers everyone who has not but still finds it too much.

    Ease of use
  7. Note
    The placeholder prices say they are placeholders

    The rate card is modelled on Manchester market rates and none of it has been agreed. Rather than leave plausible-looking numbers to be discovered later, the page carries a red box saying they are placeholders and must not be published unchanged. Same reasoning as the Reviews page marking its four reviews as fake: content that looks finished is the kind you stop seeing.

    Quality of life
  8. Shipped
    The About page says the qualification is not taken

    All three DVSA parts are listed as not yet taken. This is a legal distinction rather than a modest one — a trainee on a pink licence must not present as a fully qualified instructor with a green badge. The page stays that way until there is a badge.

    Functionality

Screens

A look around

Look around — 4 screens

  • Mancunian Way Driving School: The hero, with the twisting L-plate and five cars crossing the asphalt band below it.
    The hero, with the twisting L-plate and five cars crossing the asphalt band below it.
  • Mancunian Way Driving School: Prices — three blocks and a fifteen-row rate card, with a red box stating outright that the figures are placeholders and the page must not be published unchanged.
    Prices — three blocks and a fifteen-row rate card, with a red box stating outright that the figures are placeholders and the page must not be published unchanged.
  • Mancunian Way Driving School: Coverage with a live postcode checker, 38 districts and five DVSA test centres with route notes.
    Coverage with a live postcode checker, 38 districts and five DVSA test centres with route notes.
  • Mancunian Way Driving School: The About page states that the ADI qualification has not been taken. That is a legal distinction, not modesty.
    The About page states that the ADI qualification has not been taken. That is a legal distinction, not modesty.