Skip to content

About

Restaurant operations case study: web ordering, Android POS, transactional inventory, cash control, and local kitchen printing.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Smash It Operations Platform

A client restaurant operations product connecting customer ordering, back-office management, a tablet POS, inventory, cash control, and local kitchen printing.

Portfolio showcase only. The client source repository remains private. This repository contains no production credentials, customer records, database exports, or proprietary source code.

Overview

Smash It is a working product built around the operational path from an order to kitchen execution and management reporting. Customers can order from a responsive web interface, cashiers use an Android/PWA point of sale, and managers operate the catalog, orders, purchasing, cash, inventory, and reporting from a back office.

Problem

Restaurant operations cross several systems: menu configuration, order capture, payment, preparation, stock consumption, purchasing, cash reconciliation, and reporting. Disconnected tools create repeated entry, inconsistent totals, missed web orders, and limited traceability.

Solution

The product uses one backend and relational data model as the operational source of truth. Web and POS orders are validated and priced on the server, recorded transactionally, reflected in inventory, and surfaced to staff. The Android POS connects the cloud workflow to receipt and kitchen printers on the restaurant's local network.

Users

  • Customers: browse the menu and submit pickup, takeaway, delivery, or dine-in orders.
  • Cashiers: use PIN access, manage baskets and cash sessions, and print tickets.
  • Managers and owners: manage catalog, orders, purchases, stock, recipes, team access, settings, and reporting.

Key Features

  • Customer ordering site built with React and Vite.
  • Tablet-oriented POS packaged for Android with Capacitor.
  • Back-office PWA for operational management.
  • Product variants, required/optional choices, and server-authoritative pricing.
  • Idempotent order submission to protect against retry duplicates.
  • Order lifecycle and status history.
  • Cash sessions, payments, cash movements, purchases, and fixed expenses.
  • Ingredient, recipe, weighted-average cost, and stock-movement tracking.
  • Transactional stock consumption and cancellation restocking.
  • Local ESC/POS receipt and kitchen printing over the on-site network.
  • Operational Socket.IO events and Web Push notifications.
  • PostgreSQL persistence through Prisma.

Product Thinking

  • Protect the order at the boundary: the backend rebuilds prices and totals from persisted catalog data rather than trusting browser values.
  • Preserve history: product names, variants, option prices, and costs are snapshotted with each order.
  • Make retries safe: a business-scoped client order ID turns duplicate submissions into idempotent replays.
  • Keep related business effects atomic: order, stock, purchase, and cash updates use database transactions.
  • Keep printers off the public internet: the Android POS reaches printers directly over the restaurant LAN.

Architecture

flowchart LR
    Customer[Customer web app] --> API[Express + TypeScript API]
    Manager[Back-office PWA] --> API
    POS[React + Capacitor POS] --> API
    API --> Prisma[Prisma]
    Prisma --> DB[(PostgreSQL)]
    API --> Media[Cloud media]
    API --> Push[Web Push]
    API -. Operational events .-> Manager
    API -. Operational events .-> POS
    POS --> Native[Android printer bridge]
    Native --> Receipt[Receipt printer]
    Native --> Kitchen[Kitchen printer]
Loading

The implementation is a modular monolith: shared business rules and transactional workflows remain in one API, while the customer site, POS, and back office are independently buildable clients.

See Architecture Notes for verified workflows and trade-offs.

Database

The relational model covers:

  • identity, businesses, roles, refresh sessions, and audit logs;
  • categories, products, variants, option groups, and options;
  • orders, item snapshots, payments, and status events;
  • cash sessions, cash movements, purchases, and expenses;
  • ingredients, recipes, and stock movements;
  • settings, printer configuration, print jobs, and push subscriptions.

Business-owned records carry a tenant identifier and are scoped at the application layer. Monetary and quantity values are stored as database decimals.

Security

Implemented in the private product

  • bcrypt password and PIN hashes;
  • signed access tokens and hashed, rotating refresh tokens;
  • role checks and business-scoped queries;
  • Zod request validation;
  • production secret-strength and database-target validation;
  • explicit production CORS configuration;
  • audit logging for sensitive actions;
  • Git exclusions for credentials, databases, signing keys, uploads, and backups.

Current limitations

  • real-time connections still require authenticated, tenant-specific rooms;
  • general login needs distributed rate limiting;
  • query-string token support should be removed;
  • tenant-isolation and authorization integration coverage should be expanded;
  • automated CI security checks are not yet enforced.

These are documented limitations, not hidden claims. See Security and Privacy.

Technical Challenges

  1. Recalculating and validating the same commercial rules for customer and POS orders.
  2. Preventing duplicate orders during unreliable-network retries.
  3. Updating orders, inventory, purchasing, and cash records consistently.
  4. Retaining historical price and cost truth after catalog changes.
  5. Bridging a cloud application to local network printers through Android.

Engineering Decisions

Decision Reason
Modular monolith Keeps tightly related restaurant workflows within one transaction boundary
PostgreSQL + Prisma Fits relational business data, Decimal fields, constraints, and transactional updates
React + Vite clients Supports focused, independently deployed operational interfaces
Capacitor POS Reuses the web interface while enabling Android notifications and printer networking
Server-side snapshots Preserves historical order and margin reporting
Client order ID Makes network retries safe and observable

Screenshots

The images below use public catalog information and contain no customer order, phone, address, revenue, supplier, credential, or printer-network data.

POS order entry

Tablet POS order-entry screen

Customer ordering home

Mobile customer ordering home

Testing

The private implementation was verified on 28 August 2026 with:

  • TypeScript checks for the backend and three active frontends;
  • production builds for the API, back office, POS, and customer site;
  • a targeted POS web-order alert test;
  • Git whitespace validation;
  • Gitleaks scanning of current tracked files.

The showcase contains no executable client code. Database-backed authorization, tenant isolation, and hardware printing need broader automated coverage.

AI-Assisted Development

AI accelerated implementation, debugging, documentation, and verification. Product constraints, architecture, database design, security assessment, acceptance criteria, and final code decisions remained under human control. Generated changes were reviewed and validated against the working system.

My Role

Git history in the private repository identifies Moad as its sole contributor. Repository evidence supports ownership of architecture, database design, backend and frontend implementation, Android/POS integration, deployment configuration, operational tooling, and technical documentation. The exact client-discovery and production-handover scope is not claimed because it is not documented in Git.

Future Improvements

  1. Authenticate real-time connections and isolate events by business.
  2. Add distributed abuse protection and remove query-string access tokens.
  3. Expand integration coverage for authorization, tenancy, order retries, stock reversal, and cash reconciliation.
  4. Enforce build, dependency, and secret checks in CI.
  5. Formalize PII retention and operational observability.

Confidentiality

This public repository intentionally excludes implementation code and operating data. Brand names and product imagery remain the property of their respective owners and are shown only to explain the delivered product.

About

Restaurant operations case study: web ordering, Android POS, transactional inventory, cash control, and local kitchen printing.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors