Windows
Offline POS
Dine-in, takeaway, delivery, split bills, promotions and loyalty. One Windows exe with SQLite that installs and updates itself.
Point of sale · Windows · Web · Android
Offline-first point of sale for cafés and restaurants in Egypt, with an online ordering menu, an owner phone app and a per-shop customer app.
One order, on every screen. And if the internet drops, the till keeps going.
Windows
Dine-in, takeaway, delivery, split bills, promotions and loyalty. One Windows exe with SQLite that installs and updates itself.
Shop LAN
Kitchen screen or printed tickets, a LAN waiter page with no app to install, a self-order kiosk and a customer display. ESC/POS printing or PDF receipts.
Web
Each shop gets a public web menu on its own subdomain. Cash, InstaPay, wallet or bank transfer. Orders land on the cashier with a chime; customers get order-status push alerts.
PWA
Live sales and trends, alerts (late kitchen ticket, void, PC offline) and day reports as PDF. Cashflow and staff-pay changes are queued for the POS to apply.
POS
Stock, suppliers, customers, cashflow, reports, staff pay and attendance. Roles for owner, cashier, waiter and kitchen. Telegram day reports, local and encrypted cloud backups.
Android
A branded Android app per shop, built with Kotlin Multiplatform. Arabic and English, Google sign-in.
+---------------------------+
| Update feed (Supabase) |
| Ed25519-signed releases |
+---------------------------+
| poll, verify, swap
v
SHOP LAN CLOUD
+---------------------------+ +---------------------------+
| POS exe | HTTPS | Cloud bridge |
| Go + React, SQLite |<-------->| Go + Gin |
| API + UI on one port |REST, gzip| Postgres + RLS |
+---------------------------+ JSON +---------------------------+
^ | | |
| SSE realtime | | |
v v v v
+---------------------------+ +--------+ +---------+ +-------+
| LAN browsers, no install | |Web menu| |Owner PWA| |Android|
| waiter page, kitchen, | | React | |Web Push | | app |
| kiosk, customer display | +--------+ +---------+ +-------+
+---------------------------+
Ed25519-signed serials bound to the PC, with paid modules (analytics, stock, loyalty, kitchen, kiosk, payroll and more). Verified offline, no license server. Issued from a vendor-side terminal UI.
The exe polls a release feed, verifies an Ed25519 signature, backs up the database, swaps the binary and keeps the previous one. A rollback button, plus a remote kill switch for a pulled version.
One Postgres for every shop. Tenant isolation is enforced by row-level security through a restricted role.
Customers sign in with Google or Apple per shop; the cloud verifies id tokens, issues EdDSA JWTs and refresh secrets, with per-IP rate limits. Owners link a phone by QR one-time code, then a bearer token.
Cloud backups are sealed with an X25519 public key. Only an offline private key opens them.
Shipped config is encrypted at rest with Windows DPAPI.
| Component | Stack | Role |
|---|---|---|
| POS app | Go 1.26, Gin, SQLite, Squirrel, Goose, zerolog, chromedp (PDF), cron. UI: React 19, Vite, Tailwind 4, TanStack Query/Table/Virtual, zustand, i18next, Bun | Single exe serving the API and the embedded UI on one port |
| Cloud bridge | Go, Gin, Postgres 18 + RLS, pgx v5, goose, EdDSA JWT, webpush | Web menu, ordering API, owner API, admin |
| Web menu | React 19, Vite, TypeScript | Public per-shop ordering menu |
| Owner app | PWA, Web Push (VAPID) | Live sales, alerts, reports |
| Customer app | Kotlin Multiplatform, Compose + Material 3, Navigation 3, Koin, Ktor client | Per-shop Android build (iOS not built yet) |
| Release & backups | Supabase: release feed, storage buckets, edge function | Signed updates and backup storage |
| License manager | Go, x/crypto Ed25519 | Library plus issuer and client CLIs |
| License issuer | TypeScript, Bun, OpenTUI (React) | Vendor-side terminal UI |
| Website | Astro, static, Cloudflare Pages | Arabic-first marketing site |
| Infra | Docker on Coolify (Hetzner VPS), Traefik, Cloudflare | Hosting |
The same POS backend, tried on other stacks before settling on Go.
| Attempt | Stack | Outcome |
|---|---|---|
| v1–v3 POS backend | Go, Gin, SQLite, Wails desktop shell, Telegram bot | 790+ commits, shipped up to v3.4; superseded by the current full-stack app |
| Kotlin | Ktor/Netty, Exposed, Flyway, Postgres, Koin, Playwright PDF, OpenAPI, RBAC plugin | Experiment |
| Node | Hono, Drizzle, Postgres, zod-openapi | Experiment |
| Bun | The same Hono codebase on Bun, puppeteer-core PDF | Experiment |
| Rust | axum 0.8, sqlx, tokio | Stub |
commits in the POS repo
current release
paid modules
languages: Arabic + English