Airport Transfer Booking Platform

Lead full-stack engineer · 2024

  • Astro
  • React
  • FastAPI
  • Supabase
  • Cloudflare Pages
  • Stripe
  • TWINT

Problem

A Swiss ground-transportation operator needed to move off manual, phone- and WhatsApp-based booking onto a self-serve website: customers should be able to book an airport transfer, see a real quote, and pay online, without a human relaying flight numbers by hand.

Constraints

  • Go-live needed to land before the client’s summer season ramp-up, so the build was split into demoable phases rather than one long build-and-reveal cycle.
  • Local payment expectations in Switzerland meant Stripe alone wasn’t enough — TWINT support was a hard requirement, not a nice-to-have.
  • The client wanted to keep post-launch operating costs low: no per-seat CMS licenses, no managed database bill they didn’t understand.

Architecture

Architecture diagram — available on request

A static Astro shell handles marketing and booking-flow pages, with React islands for the interactive quote and booking form. A FastAPI backend owns pricing logic, flight-status lookups, and Stripe/TWINT payment intents; Supabase (Postgres) stores bookings and driver assignments. Cloudflare Pages serves the static build, with FastAPI running as a separate service.

Stack

Astro, React, FastAPI, Supabase, Cloudflare Pages, Stripe (with TWINT).

My role

Sole engineer end-to-end — architecture, frontend, backend, payment integration, and deployment — working directly with the client on scope and phasing.

Outcome

Phase 1 shipped with live flight-tracking integration, so quotes adjust to actual arrival times rather than scheduled ones. Delivered on a phased schedule with a working demo at the end of each phase, which kept the client able to sanity-check direction before the next phase began.