Skip to main content

Restaurant Operations Platform

iPad restaurant system -- floor plans, payments, and receipt printing over Bluetooth

Private
Restaurant Operations Platform hero
The Problem

Restaurant Operations Platform

A full-stack restaurant management platform distributed to restaurant operators. Led iOS development across the MVVM codebase. The iPad app handles floor plan visualization, table management, guest reservations, messaging, and receipt printing over BLE. A companion web platform provides the API and admin dashboard.

iOS (iPad-first) + Web

Platform

Lead iOS Engineer

Role

My Role
Lead iOS DevelopmentHardware IntegrationFeature Development
Process

From Floor Plan to Service

01

Codebase Onboarding & Feature Ownership

Joined a large, mature MVVM codebase and quickly took ownership of iOS development. Established patterns for new feature development, coordinated with the web team on API contracts, and maintained consistency across the Swift project.

02

Floor Plan & Table Management

The core of the app is a visual floor plan where staff drag, assign, and manage tables in real time. Guests get seated, courses tracked, and checks managed from an interactive canvas. iPad-first design means the UI needs to work for quick taps during a dinner rush.

03

Receipt Printing over BLE

Integrated a third-party printer SDK for thermal receipt printing over Bluetooth. The printer package handles discovery, connection management, receipt formatting, and print queuing. Network and BLE printing paths are both supported since restaurants use both.

04

Payments & Reservations

Stripe handles payment processing. The reservation system manages booking, waitlists, guest profiles, and messaging. Supabase backs the real-time data layer. Three environment schemes (Local, Staging, Production) keep everything cleanly separated.

Key Features

Speed Meets Precision

01

iPad-First Interactive Floor Plans

Restaurant staff manage their dining room from a visual floor plan. Tables show status at a glance: available, seated, ordering, dessert, check requested. Drag to rearrange, tap to seat, long-press for details. The interface is optimized for speed because servers are using it mid-service, not sitting at a desk.

02

BLE Receipt Printing

Thermal receipt printers connect over Bluetooth Low Energy using a third-party printer SDK. A dedicated Printer package handles device discovery, connection lifecycle, receipt template formatting, and a print queue for when multiple checks close simultaneously. Falls back to network printing when BLE is unavailable.

03

Multi-Environment MVVM at Scale

A large, mature MVVM codebase organized across SPM packages with strict dependency boundaries. Three environment schemes (Local, Staging, Production) with Arkana-managed secrets. SwiftLint and SwiftFormat enforce consistency across the team. The architecture scales because every package owns one concern and the boundaries are enforced at compile time.

Technical Deep Dive

Under the Hood

Built With
SwiftSwiftUIiOSBLE
iPad AppSupabaseStripeReceipt PrinterWeb API

Key Technical Decisions

BLE Printing

Receipt printers are finicky. The printer SDK wraps CoreBluetooth with printer-specific commands for text formatting, barcode rendering, and paper cutting. I built a queue system because closing three tables at once sends three print jobs simultaneously, and the printer handles one at a time. Failed prints retry automatically.

iPad-First Design Constraints

iPad apps have more screen real estate but different interaction patterns. The floor plan needs to be usable one-handed while carrying plates. Buttons are larger, touch targets are generous, and critical actions (seat, check, print) are always one tap away. iPhone support is secondary and adapts the layout rather than redesigning it.

MVVM at Scale

Managing a large Swift MVVM codebase requires discipline. View models stay thin, coordinators handle navigation, and service layers are protocol-based for testability. Each SPM package enforces its own dependency boundaries. The codebase works because the patterns are consistent, not because the architecture is clever.

Learnings

What I Learned

Receipt printers will humble you

They disconnect randomly, have tiny buffers, and every model has quirks. The print queue was an afterthought that became essential the first time three tables closed at once and only one receipt came out. Hardware integration is never as simple as the SDK docs suggest.

iPad-first is a different design discipline

More screen space doesn't mean more features visible. It means bigger touch targets, one-hand-friendly layouts, and interfaces that work when you're standing and moving. I redesigned the floor plan interaction model twice before it felt right during actual service.

MVVM scales when you enforce boundaries

A large Swift codebase sounds unmanageable, but the SPM package structure keeps each module focused. The key is consistency -- same patterns everywhere, strict dependency rules, and no shortcuts. When the whole team follows the same conventions, a large codebase stays navigable.

Next ProjectSee more projects →
Enterprise AI Platform

Enterprise AI Platform

Production AI platform routing across 6 LLM providers with built-in safety