Skip to content
All work

Web app · 2026

Estuary Line booking

Tickets, timetables and live departures for a river ferry that carries 9,000 people a day. Booking went from a phone call to forty seconds on a phone.

Client
Estuary Line
Role
Design and build, solo
Year
2026
Stack
  • Astro
  • TypeScript
  • PostgreSQL
  • Stripe
  • Cloudflare Workers
The Estuary Line site on a laptop screen, a departure board with the next three sailings and a large Book a ticket button over a photo of a ferry on a wide river.

The brief

Estuary Line runs four boats across the river every twenty minutes. Season tickets were sold at a window, single tickets on board in cash, and the timetable was a PDF that went out of date every time the tide did. They wanted people to buy a ticket on their phone on the pier, and to see the next boat without opening a PDF.

What made it hard

  • Live in eleven weeks, before the summer timetable
  • The pier has weak mobile signal, so pages must work on a slow 3G connection
  • Staff check tickets with a scanner that only reads QR codes printed on paper or shown at full brightness
  • Two languages from day one

Results

Tickets bought online
Before: 0%After: 61%
Time to buy a ticket
Before: Phone callAfter: 40 s
Largest paint on 3G
After: 1.2 s
Calls to the office about times
Before: 140 a weekAfter: 30 a week

How it was built

The first week went to the pier, not the editor. I spent two mornings watching people queue at the ticket window and timed how long the signal took to load a page: about nine seconds for a typical ferry company’s home page. That number became the budget. The departure board and the ticket screen had to be useful in under two.

A board that is right

The old timetable was a PDF because the times change with the tide. I wrote a small service that takes the operator’s sailing plan and the boats’ live positions and produces the next six departures for each pier. The board on the site is plain HTML from the edge, refreshed with a few lines of script, so it shows something useful before any JavaScript arrives.

Buying a ticket in forty seconds

Checkout is three steps: the crossing, the ticket, the payment. Apple Pay and Google Pay come first because on a pier nobody wants to type a card number. The ticket is a QR code on a screen that raises its own brightness, because the scanners on board are old and fussy, and it is also emailed as a PDF for people who’d rather print it.

What I’d do differently

I underestimated how many people buy tickets for someone else. A “send to a friend” link came in week ten and should have been in the first sketch.

Screens

Mara rebuilt our booking in eleven weeks and the phone stopped ringing with people who couldn't buy a ticket. That was the whole point.

Inês Correia · Operations, Estuary Line

Credits

Photography
Estuary Line's own crew
Ticket scanners
The operator's existing hardware

Ask about my work

Services, prices, projects and availability

Hi! Ask me what Mara builds, roughly what it costs, how a project runs or when she's free.

Accent

Get itGet this template: Kernel on WPTom