All work

03Booking & logistics platform

UniSettle

A booking platform that gets international students from the airport to their UK university accommodation — pickups, starter kits and settlement services in one paid flow.

ReactViteFirebaseStripeTailwind CSSVercel
UniSettle booking platform showing airport pickup and starter kit options

Overview

A booking platform that gets international students from the airport to their UK university accommodation — pickups, starter kits and settlement services in one paid flow.

  • End-to-end booking with Firebase Auth and Stripe Checkout.
  • Real-time booking management shared by students and operators.
  • Admin panel for driver assignment and settlement logistics.

The problem

An international student landing in the UK has to arrange an airport transfer, a SIM, bedding and kitchen basics from a different country, in a different time zone, usually through WhatsApp groups and cash. It is the most stressful week of the move and the least organised part of it.

Who it is for

International students arriving at UK universities, and the operators who have to assign drivers and fulfil orders.

My responsibilities

  • Built the student-facing booking flow and the operator admin panel.
  • Implemented Firebase Authentication and Stripe Checkout end to end.
  • Designed the real-time booking model that both sides read from.
  • Built driver assignment and logistics tooling for the admin side.

Product & technical decisions

Firebase for auth and realtime, Stripe for money

Two managed services owning the two areas where mistakes are expensive. Payment details never touch the application, and booking state syncs to both audiences without building a socket layer.

One data model, two interfaces

Student and operator views read the same booking records, so there is no reconciliation step and no window where the two sides disagree about what was booked.

Admin tooling treated as a first-class surface

A booking product is only as good as its fulfilment. The driver-assignment panel was built as part of the product rather than left as a spreadsheet, which is what makes the service repeatable.

Mobile-first, on airport wi-fi

Every flow was designed for a phone on a bad connection, because that is where the booking is actually confirmed.

Architecture

How the pieces fit together, from the surface the user touches down to the sources of truth.

Clients

  • Student booking app
  • Admin panel

Application

  • Booking flow
  • Driver assignment

Data

  • Firebase Auth
  • Realtime booking store

External

  • Stripe payments
  • Vercel hosting

InterfaceApplication logicData & authThird-party

Key functionality

Airport pickup booking

Students book a transfer against a flight, pay up front, and get a confirmed booking rather than a promise in a group chat.

Starter kits and settlement services

Bedding, kitchen and essentials bundles ordered alongside the transfer, so one checkout covers the whole arrival.

Real-time booking state

Bookings update live for both the student and the operator, so status is never a question that needs an email.

Operator admin panel

Internal tooling to assign drivers, track fulfilment and manage the day's arrivals — the part that makes the product actually operable.

Where it stands

UniSettle is deployed and publicly usable — the full feature set above is live rather than a prototype.

Open the live product(opens in a new tab)

What I would improve next

  • Consolidate the two checkout backends — a Vercel Function and a Firebase Function currently implement the same flow, which is two sources of truth for pricing and metadata.
  • Resolve prices from a server-owned catalogue instead of trusting the amount submitted by the client.
  • Add a Stripe webhook so a booking is confirmed on verified payment rather than on the post-checkout redirect.
  • Driver-side mobile view with live pickup status, and flight tracking so delays reschedule pickups automatically.