Phase 1 release — Free single-device POS + Inventory
Goal: Merchant can set up a store, manage products and stock, complete offline Sales with manual payment confirmation (cash / EDC / static QRIS), view transaction history, issue receipts (view, share, and thermal print to invoice/struk), and use the complete Phase 1 Backup & Restore feature — on Android, iOS, macOS, and Windows.
Phase 1 covers the core POS + Inventory domains only:
Lakuyo
├── POS (Cart, Checkout, Payment, Receipt, Sale / transaction history)
└── Inventory (Product catalogue, Stock quantity, Receiving / adjustment, Stock movement history)
Order Management → separate domain → expands later → Order ≠ SaleFull Order Management is not required for Phase 1. See Product/Domain Terminology.
Inventory & catalogue (POS-002…004)
- Optional product image per item (local file; included in backup)
- Category optional when saving a product (POS-002); category browsing expected in cart (POS-004) with an uncategorised default bucket
- Store tax (POS-001), store-level only; applied at checkout (POS-005)
- Positive stock adjustment for receiving/restocking; negative corrections allowed
- Stock Movement History ledger per tracked product
Receipts & thermal print (POS-007, POS-023)
- On-screen receipt from completed Sale + store profile (offline)
- Share via OS share sheet (image/PDF)
- Thermal print to paired ESC/POS printer (58mm or 80mm) — merchants often call this invoice or struk
- Optional auto-print after sale; reprint from transaction history
- Android POS terminals (Bluetooth/USB) are the primary hardware target; all four clients implement equivalent behaviour before Phase 1 release
POS-008 Backup & Restore
POS-008 is part of the main Phase 1 feature set and contains two entitlement paths:
- Free: manual local backup / restore without purchase or Lakuyo account.
- Personal Cloud Backup (Drive Backup): one-time purchase (indicative ≈ Rp100.000) or included while Pro is active; Google Drive on all clients (Android, iOS, macOS, Windows) using the merchant’s own Google account (not iCloud; not Lakuyo-hosted).
Personal Cloud Backup includes Back Up Now, restore, and automatic backup enabled by default after Google Drive authorization. The user must be able to turn automatic backup off.
The unlock screen must provide Buy once and Restore Purchase. Restore Purchase restores prior store ownership of the one-time feature; it is distinct from Restore Backup, which restores merchant data.
Personal Cloud Backup does not unlock coordinated multi-device synchronization or Lakuyo-managed cloud backup.
Phase 1 exit criteria:
- POS-001…008 and POS-023 acceptance criteria automated and passing on Android, iOS, macOS, and Windows
- All four clients release together — no public staggered rollout per platform (ADR-003)
- Airplane-mode Sale path demonstrated for cash, EDC confirm, and QRIS manual confirm
- Products and local stock management work without backend connectivity
- POS-008 manual local backup / restore works without purchase or backend account
- POS-008 Personal Cloud Backup works after a valid one-time purchase and while Pro is active
- Android, iOS, macOS, and Windows Personal Cloud Backup work with an authorized merchant-owned Google Drive account
- Manual Back Up Now and restore work on all four clients against Google Drive
- Automatic Personal Cloud Backup is ON by default after authorization, can be turned OFF, and has defined cadence/failure/retention behavior
- Backup payload includes SQLite data and product images (per POS-008)
- Restore Purchase successfully restores a previous non-consumable purchase on reinstall/new device under platform-store semantics
- The app automatically queries prior store ownership when practical
- Pro downgrade behavior is verified: a prior one-time purchase remains owned; Pro-only inclusion ends without granting lifetime ownership; existing personal-cloud backup data is not deleted
- Existing Personal Cloud Backup remains recoverable after Pro expiry
- POS-008 backup format/versioning and supported restore migrations are defined and shared across Android, iOS, macOS, and Windows on Google Drive
- POS-008 restore is explicit and protected against accidental data loss
- Missing/expired Google Drive authorization has a safe reconnect path and never blocks local POS + Inventory use
- Backups contain lineage/revision/schema metadata sufficient to detect a restore from another installation
- Restoring onto another installation explicitly transfers active Personal Cloud Backup writer ownership to that installation
- A previous installation may continue local operation but cannot silently overwrite the same personal-cloud backup lineage until writer ownership is explicitly reclaimed
- No Personal Cloud Backup workflow is presented as multi-device sync or as a safe merge of divergent local databases
- No Lakuyo backend is required in the default free configuration or for Personal Cloud Backup
- Kasir UX remains simple enough for fast checkout (qualitative founder review)
delivery/implementation-status.mdshows ✅ for Android, iOS, macOS, and Windows on POS-001…008 and POS-023
Phase 2 release — Commercial boundary
Goal: Pro subscribers can authenticate, unlock extra devices via Play/App Store subscription, sync, and use Lakuyo-managed cloud backup.
Exit criteria:
- Store subscription validation (Google Play / App Store / Mac App Store / Microsoft Store)
- Free users and Personal Cloud Backup users remain fully functional without a Lakuyo account
- Backend rejects unentitled sync
- Multi-device unlock path matches founding commercial model
- Lakuyo cloud backup remains distinct from user-owned Personal Cloud Backup
- Pro includes Personal Cloud Backup while the subscription is active without creating a lifetime one-time-purchase entitlement
Phase 3 — Expansion
Sequenced after Phase 2 hardening; each of POS-015…024 needs a full spec before build. This phase includes optional integrated PSP, Order Management / restaurant flows, waiter/Sales order-taking, kitchen fulfilment, customer membership (member pricing, admin discounts, per-member purchase history — POS-024), employee roles, and other expansion capabilities.