
The Kak Mell system is a PWA that runs my family's catering business day to day. Staff open it on their phones in the kitchen: invoices, ingredient lists, and the daily cleaning roster all live in one place. It has billed over RM1.28M across 218 invoices so far.
Why it exists
I grew up working weekends in this kitchen, so I knew exactly where the paperwork hurt. Before the system, my dad studied every client's menu and handwrote the ingredient list for each event: how many bags of rice, how many chickens, the santan and sagu ratios for bubur. It worked, but it lived in his head and on paper.

How it works
The app is React 19 with TypeScript and Tailwind on Firebase: Auth, Firestore, Storage, Functions, and Hosting, with shadcn/ui for the interface. It installs as a PWA, so on a kitchen phone it behaves like a native app, service worker and all.
The core is a typed ingredient calculator that encodes the kitchen's real math, the same rules my dad worked out by hand. It thinks in guest brackets from 100 to 1000 pax, each with its own quantities for rice bags, chickens, and the rest, and unit tests lock every formula down. When reality disagrees with a formula, a type-safe override system lets staff adjust a single item, per bracket or flat, without touching the math underneath. Around it sit an activity log recording who changed what, a fully keyed interface with English default and a Bahasa Melayu toggle for staff, and three PDF exporters for invoices, weekly exports with a cover page, and calibration forms.

Turning judgment into rules
The hard part was not the code, it was the knowledge. Catering estimates are judgment built over years, and getting them into typed formulas meant sitting with how the kitchen actually decides quantities, then writing tests that pin those decisions down. The override system exists because no formula survives every real event, and the app had to bend without lying about the math.
Live and growing
The system runs at kakmell.my and staff use it every day. It is actively maintained and grows with the business. The latest addition is a task board for kitchen-closing duties: the admin assigns each day's cleaning tasks, staff see only their own, and a task only counts as done when a photo proof goes up, straight from the phone camera.
