Skip to content
all work
Field testing· 2026-09Client project

Café POS

An offline-first point of sale for a specialty café: tablet app, sync server, receipt and label printing.

Client project. Private.
Proof
✓ 34/34 server database tests (Postgres 16)
Proof
✓ 47/47 tablet-app tests, incl. simulated printers
Proof
✓ Reproducible deploy stack

My role

Architecture, data and sync contract, integration and deployment. Tablet app and server implemented by AI coding agents under my contract and review.

The problem

A small café needs to keep taking orders when the internet drops, print to cheap thermal and label printers, and see stock and sales somewhere central.

What I built

  • A Flutter tablet app: menu, modifiers, cash tender and change, order slips, and cup stickers on a Bluetooth label printer.
  • A Next.js + PostgreSQL 16 server with a written sync contract. Orders, lines, payments and stock movements sync up, and price changes sync down on a 60-second cycle.
  • A Docker Compose deploy that builds from scratch: migrations, seed, health check, non-root server, no public database port, and nightly backups.

Hard parts

Offline-first sync

The tablet is the source of truth for orders while offline. The server is the source of truth for the menu. A server-side price edit reached the tablet on its next sync with zero unsynced orders left behind.

Printing to real hardware

ESC/POS receipts are rendered as a 576-dot raster with a cut. Label printing speaks the printer's Bluetooth protocol directly. Both are covered by tests against simulated printers before field testing on the café's own device.

Stack

  • Flutter
  • Dart
  • Next.js
  • PostgreSQL
  • Docker Compose
  • ESC/POS
  • Bluetooth LE

Skills shown: Flutter / Dart, Next.js, PostgreSQL, Docker, Linux servers, Automated testing, Specs & SDLC, AI-assisted development