Villa Management System
A full-stack cafe management system covering orders, menu, inventory, waste tracking and staff workflow - built for the business I work at, from the operations problems I watch happen every shift.
- Role
- Sole engineer - contract
- Year
- 2025
- Type
- Full-stack, Backend, Web
villa-management-system.vercel.app
Open
4 core domains
Modules
Layered + async
Backend
Problem
Daily cafe operations run on memory, paper and habit. Orders, menu changes, stock levels and product loss all live in different places, which means nobody can answer what actually happened on a given day.
Approach
One internal system with four domains that share a database: order management with generated receipt numbers and daily tracking, menu management with categories and availability, inventory with categories and daily stock, and waste logging with reasons so loss becomes measurable.
Layered backend
FastAPI with a layered architecture - routers, schemas, services, models - over async SQLAlchemy and Alembic migrations. Pydantic handles validation at the boundary so the service layer can assume clean input.
Deployment split
Frontend on Vercel, backend on Render, PostgreSQL on Neon. Clerk integration architecture is prepared for organization-based access on the protected dashboard.
Outcome
Deployed and in use as internal tooling. It is the first system I built where the users were people I see in person and the bugs had a same-day cost.
What it taught me
- Building for people you work beside removes every excuse for a bad interface.
- Waste tracking only works if logging it is faster than skipping it.