Full-stack web application · 2025
FeastioRestaurant management system
Feastio is a full-stack Django application that covers the working day of a restaurant: taking orders, holding and seating table bookings, producing bills, and administering staff and menu data. It is built as one system with a REST API underneath, so the interface and any future client read from the same source of truth.

The problem
A restaurant runs several moving parts at once: what has been ordered, which tables are free, what a customer owes, and who is allowed to change any of it. When those live in separate tools, or in one person's memory, they drift apart. Feastio was an exercise in modelling the whole thing as a single connected system.
Data first
I started with the schema rather than the screens. Orders, order lines, tables, bookings, bills and users were defined with their relationships and constraints before any interface existed, so the rules (a bill belongs to an order, a booking occupies a table for a window) are enforced by the database rather than by whichever view happens to be running.
API and interface
Django REST Framework exposes the domain over a REST API, and the interface consumes it for the parts of the app that update in place. Keeping the API as the contract means the dashboard, the order screens and anything added later all read the same shapes.
What I took from it
This was the project where relational modelling stopped feeling like coursework. Getting bookings and billing right meant thinking carefully about time, state transitions, and what should be impossible to represent at all (a habit that has shaped everything I have built since).