Coffee Shop Management System
An offline-first POS and management platform for coffee shops: recipe-based stock deduction, shift control, and live reporting across mobile and web.
- Client
- Client project · F&B retail
- Role
- Full-Stack Developer
- Timeline
- 2026 · ongoing
- Year
- 2026
Overview
An offline-first point-of-sale and management platform for high-volume coffee shop operations. A Flutter cashier app on Android tablets pairs with a Next.js management portal for owners, sharing a Supabase backend so every order, shift, and stock movement stays in sync.
The problem
Cloud-only POS systems stall at the counter the moment the internet drops, and manually tracking ingredient usage per drink makes real cost of goods sold impossible to know. Neither is acceptable during a morning rush.
Goals
- Zero checkout downtime, with or without internet.
- Automatic ingredient deduction from each drink's recipe.
- Accurate, real-time margins as ingredient costs change.
- One shared source of truth for cashiers and owners.
Architecture
The Flutter app treats a local Drift (SQLite) database as its primary store, so orders, shifts, and receipts commit instantly on-device. A background sync engine pushes completed records to Supabase in dependency order and pulls master data back down, while the Next.js web dashboard reads directly from Supabase under Row Level Security for real-time reporting.
What it does
Order builder & checkout
Fast tablet-friendly ordering with drink customization, tax, and service fee handled automatically.
Shift & cash control
Cashiers open and close shifts with automatic cash reconciliation, restored instantly after a crash or reboot.
Recipe & inventory setup
Every menu item is backed by a configurable recipe, so a sale automatically deducts the exact ingredients used.
Tax & service fee configuration
Owners tune tax rates, service charges, and rounding rules once; every transaction applies them consistently.
Receipt printing
Thermal receipts print over Bluetooth, USB, or network, with printer setup managed directly from the app.
Reporting dashboard
Owners see live revenue, top items, and shift history from the web dashboard without touching the till.
More of the system
Results
Cashiers keep working through internet outages, ingredient costs deduct themselves per sale, and owners get a live view of the business from a browser instead of an end-of-day guess.
Lessons
Treating the local database as the source of truth, not the cloud, forced a cleaner sync design and made the app genuinely resilient. Modeling recipes as real domain data, not a config afterthought, is what made accurate COGS possible at all.