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.

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.
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.