Truly offline-first
Postgres runs on the venue's till PC. The server is a sync replica, not the source of truth. Lose the internet, lose Cloudflare, lose the data centre — orders still ring, tickets still print, totals still tally. The outbox drains on reconnect.
Spirits-aware ordering
Measure, mixer, serve — picked in three taps. A "Double" is +100% via a surcharge, not a separate SKU. Keg yields know that a 20L barrel is 35–38 pints, not 40. Inventory reconciles against pour counts, not guesswork.
Multi-venue, one brain
One terminal, switch venues from the sidebar. Shared barcode and product catalogue across all sites. Stock, sales, reports — per venue or rolled up. docker compose up moves the whole stack to another PC in minutes.
Voice ordering for QR menus
Guests speak their order in any language. AI parses, confirms, applies dietary guards (vegetarian, vegan, halal, keto, allergens), and sends to kitchen. Phone-OTP gate keeps it real customers, not bots.
Inventory that watches itself
Scan a barcode at intake, Tap-Tap reads it from a shared catalogue or falls back to Open Food Facts. Receipts get attached to inventory lots. Yield rules turn one keg into N pints, one bottle into N nips. Nightly health snapshot tells you what's quietly running out.
Slow-stock priority
Recommendations push slow-moving stock first, not whatever has the fattest margin. Freshness beats markup — and the kitchen wastes less.
Built for bars that actually pour
Most POS systems were designed for restaurants and have a "bar" tab bolted on. Tap-Tap was designed by operators who run both. Spirit modifier groups, double-by-surcharge pricing, keg yield reconciliation, ABV-aware reporting, happy-hour rules with floors and ceilings — all primitive types in the data model, not afterthoughts.