Work/Case study
Point of sale PWA
A restaurant POS that keeps working when the internet doesn't.
I built an installable POS system that connects checkout, kitchen operations, inventory, sales, expenses, and thermal printing while supporting offline order capture and automatic synchronization.

Problem
Counter orders, kitchen tickets, stock, and end-of-day totals were too easy to split across notebooks, printers, and messages — and a dropped connection could stop checkout.
Solution
A React PWA on Supabase with checkout, a realtime kitchen board, recipe-based inventory, sales and expense reporting, role-based staff access, IndexedDB offline queueing, and Web Bluetooth ESC/POS printing.
Outcome
The counter, kitchen, inventory, and reports run in one installable system, and orders still capture when connectivity fails.
Role
Design and full-stack development
Architecture
Realtime
Offline
Printing
Engineering challenges
Checkout that survives a dropped connection
If the network fails during checkout, the order is stored in IndexedDB, remains queued, retries automatically, and syncs once connectivity returns.
Kitchen and counter as one live system
Orders have to appear on a tablet kitchen board in realtime, with complete, reprint, and void-with-reason flows that match how the line actually works.
Inventory that follows the recipe
Stock deducts from what was sold, including waste and restock, instead of living in a separate notebook from the POS.
Features
POS
- Product selection and add-ons
- Walk-in, online, pickup, rider, and third-party booking orders
Kitchen queue
- Realtime kitchen board
- Mark orders complete, reprint labels, void with reason
- Tablet-optimized layout
Sales & expenses
- Daily, weekly, and monthly reports
- Cash vs GCash and bowls sold
- CSV export
- Business expenses, capital, salary tracking, and categories
Inventory
- Stock tracking, restock, usage, and waste
- Low-stock warnings
- Recipe-based automatic stock deduction
Authentication & security
- Supabase Row Level Security
- Private receipt uploads
- Security headers
- Protected order totals
- Service-role API for managing staff accounts
- Roles: super_admin, admin, staff, viewer
Engineering
- Installable PWA with IndexedDB offline order capture
- Automatic retry and sync when connectivity returns
- Supabase Auth, PostgreSQL, RLS, Realtime, and Storage
- Web Bluetooth ESC/POS thermal printing