Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

679 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Eatery — Restaurant Operating System

Offline-first restaurant POS & management system — single binary with role dispatch. Free & open-source alternative to Toast, Square for Restaurants, and Lightspeed.

Flutter Dart Platforms Riverpod Database PR-Agent


Overview

Eatery is a single Flutter binary that presents four role-specific UIs from one codebase. The device's role is selected on first launch (or via --dart-define=role for dev) and persisted in SQLite:

Role Login Purpose Users
Admin PIN (StaffType.admin) Full POS, management, config, reports Owner, manager
Waiter PIN (StaffType.waiter) Order taking, table management Waitstaff
KDS None (kiosk) Real-time order feed, KOT display Chefs
Display None (kiosk) Customer-facing order status Customers

Key differentiators:

  • Full offline resilience — POS works without internet
  • Local-network sync via OpLog over WebSockets (no cloud dependency)
  • Role-based access control — each role sees only its permitted routes
  • Cross-platform: Android, iOS, macOS, Windows, Linux
  • Zero monthly fees — free open core

Tech Stack

Category Choice
Language Dart 3.11+ / Flutter 3.41+
State Management Riverpod (NotifierProvider / AsyncNotifierProvider)
Navigation GoRouter 17.x (~76 routes, RBAC guard)
Database SQLite via native Zig FFI (libeaterystore)
Native Store Zig 0.15+ / libeaterystore (embedded SQLite via dart:ffi)
Sync WebSocket + OpLog (operation log) + mDNS discovery
Code Gen freezed, json_serializable, riverpod_generator, build_runner

Getting Started

# Prerequisites: Flutter 3.41+, Zig 0.15+
flutter pub get
cd libeaterystore && ./scripts/build.sh && cd ..
dart run build_runner build --delete-conflicting-outputs
flutter analyze --no-fatal-infos --no-fatal-warnings lib/
flutter test
flutter test packages/eatery_core/test/

See docs/guides/getting-started.md for full setup instructions.


Project Structure

eatery/
├── lib/                     # Unified app entry & all role pages
│   ├── main.dart            # Single entry point, role-aware init
│   ├── core/router/         # Unified GoRouter + RBAC guard
│   └── pages/
│       ├── authentication/  # Login, reset PIN
│       ├── dashboard/       # Admin POS & management
│       ├── waiter/          # Table view, menu, cart
│       ├── kds/             # Kitchen ticket grid
│       ├── display/         # Customer order status
│       └── role_picker.page.dart  # First-launch role selector
├─── packages/
│   └── eatery_core/         # Shared models, DB, sync, widgets, theme
├── libeaterystore/          # Native Zig/SQLite library
├── docs/                    # Documentation
│   ├── architecture/        # ADRs, specs, data models, sync protocol
│   ├── guides/              # Getting started, architecture overview
│   ├── product/             # Product requirements
│   ├── plan/                # Roadmaps, audits
│   └── decisions/           # Architecture Decision Records
├── assets/                  # Images, Lottie, icons, SQLite schema

Documentation

Link Audience
Getting Started New contributors
Architecture Overview Developers starting out
Architecture Index Design tokens, component library, ADRs, specs
Reconstruction History Full Phase 1-7 evolution timeline
Product Requirements PRDs, personas, feature roadmap
Development Guide Build, CI, testing

License

Open-source (license TBD).

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages