Lakuyo is a local-first commerce app for Indonesian merchants built around two core operational domains: POS and Inventory. It runs reliably on affordable phones and tablets without depending on cloud infrastructure for every sale.
The name Lakuyo was chosen for its local / Javanese character and distinctiveness in a crowded kasir/toko naming space (see ADR-002).
Problem
Many small merchants (warung, café, retail, restaurant) need:
- Fast, simple checkout on a phone or tablet
- Product and inventory management that stays accurate
- Receipts and basic sales history — view, share, and thermal print (invoice/struk)
- Operation during unreliable or absent connectivity
- A safe way to recover local business data if a device is lost, damaged, or replaced
- Optional order-taking flows for floor staff / restaurants
- Optional multi-device use (kasir + floor staff) without forcing cloud cost on single-device users
Primary near-term audience: starter and survival entrepreneurs — merchants beginning or restarting a business on the devices they already have: phone, tablet, Mac, or Windows PC (see Product/Competitive Landscape, Personas).
Existing cloud-first POS tools fail when the network fails, and free tiers often still require backend accounts that create ongoing cost and friction. Small merchants often already have cash, EDC, or a static QRIS code — they should not be forced onto an expensive PSP subscription to use a kasir app.
Core product domains
Lakuyo
├── POS
│ ├── Cart
│ ├── Checkout
│ ├── Payment
│ ├── Receipt
│ └── Sale / transaction history
│
├── Inventory
│ ├── Product catalogue
│ ├── Stock quantity
│ ├── Receiving / adjustment
│ └── Stock movement history
│
└── Customer membership (Phase 3, POS-024)
├── Member registry
├── Member vs walk-in pricing
├── Admin membership discounts
└── Member purchase history
Order Management
→ separate domain
→ expands later
→ Order ≠ SalePOS
Checkout and transaction processing: cart, checkout, payment confirmation, receipts (on-screen, share, thermal print), and completed Sale / transaction history.
Inventory
Product and stock management: catalogue, stock quantity, receiving / adjustment, and stock movement history.
Order Management
A separate domain for customer requests before checkout: orders, order items, tables, waiter/Sales order-taking, and fulfilment. It expands later (Phase 3). It is not nested under POS, and Order ≠ Sale.
Customer membership
Merchant-run store membership for registered customers (pelanggan member) — Phase 3 (POS-024). Admin enables the program, sets optional member prices per product, and configures membership discounts. Only sales linked to a member appear in that member’s purchase history; walk-in sales have no customer-level history. Not Lakuyo Pro subscription; not gym/class membership apps.
Canonical vocabulary: Product/Domain Terminology.
Solution
Local-first by default, cloud-enhanced when you need it.
- Core POS + Inventory runs entirely on-device using SQLite.
- A Sale is created when checkout/payment is completed; an Order represents a customer’s requested items before that point.
- Free users never require Lakuyo backend connectivity and do not cause backend data growth.
- Backup & Restore is a main Phase 1 feature (POS-008). Manual local backup/restore is free; Personal Cloud Backup (Drive Backup) is unlocked by a one-time purchase (indicative ≈ Rp100.000) or included while Pro is active.
- Personal Cloud Backup uses Google Drive on Android and iOS (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 merchant can turn automatic backup off.
- Personal Cloud Backup is disaster recovery and device replacement, not synchronized multi-device operation.
- Pro subscribers unlock Lakuyo-operated multi-device sync, Lakuyo cloud backup, aggregated reporting, and related cloud capabilities; Pro also includes Personal Cloud Backup while active.
- Subscriptions and one-time digital feature purchases are fulfilled through Google Play Billing / Apple App Store as appropriate so founders do not operate card billing early.
- In-store payment recording supports manual confirmation (cash / EDC / merchant QRIS) first; integrated PSP (e.g. Doit) is optional for larger merchants later.
Product principles
- A sale must succeed offline. Network is optional for free-tier core operations.
- POS and Inventory are both core. Inventory is not merely a secondary checkout feature.
- Order is not Sale. Order-taking may precede checkout; Sale means a completed commercial transaction.
- One device is enough to start. Free and Personal Cloud Backup support single-device operation without requiring Lakuyo backend infrastructure.
- Backup & Restore is core Phase 1 scope. POS-008 includes free local backup/restore and paid Personal Cloud Backup.
- Basic data portability stays free. Manual local backup / restore is part of the free core.
- Charge once for user-owned backup convenience. Personal Cloud Backup is a one-time unlock (≈ Rp100.000 indicative) because the merchant supplies Google Drive storage; active Pro also includes it; Lakuyo backend stays free of free-tier backup bytes.
- Charge recurring fees for recurring Lakuyo services. Subscription value is Lakuyo-operated cloud, multi-device sync, Lakuyo cloud backup, and related services.
- Backup is not sync. Personal Cloud Backup does not merge concurrent databases or replace Pro synchronization.
- Never hold user-owned backup data hostage. Expiry of Pro must not delete existing Google Drive backups; recovery of an existing backup remains available.
- Every platform merchants use. Phone, tablet, Mac, and Windows PC are first-class. Android-based POS terminals supported via the Android client (ADR-003).
- Phase releases ship together. Android, iOS, macOS, and Windows release as one milestone per phase — no staggered public rollout per platform.
- Keep the kasir fast and simple. Cashiers work under time pressure; UI complexity is a product bug.
- Same business rules everywhere. All four clients and backend implement control-plane specs — they do not invent divergent domain logic.
- Respect how Indonesian merchants already get paid. Do not force PSP fees on warung that already settle manually.
Non-goals (near term)
- Replacing full ERP / accounting suites
- Hardware-locked proprietary terminals as the only supported form factor
- Requiring a Lakuyo account before the first free sale
- Treating Personal Cloud Backup as live synchronization between active devices
- Adding a Lakuyo backend solely to police backup usage
- Operating our own licensed payment switch / acquiring platform
- Building gym / other vertical apps before Phase 1 ships