All posts

Apr 2, 20265 min read0 reads

Local-First Is a Business Decision

Building a POS for Cambodian restaurants taught me that offline-first architecture is not a technical preference. It is respect for the customer's reality.

Local-First Is a Business Decision cover

When I started the restaurant POS project, the architecture question answered itself the first time I watched a lunch rush in Phnom Penh with the router blinking red.

Cloud-first software makes an assumption: connectivity is the default and offline is the exception. For a huge part of the world, and for a huge class of businesses, that assumption is simply wrong.

What local-first actually means

Local-first is not "we cache some data." It means the local database is the source of truth. Every operation the business depends on (taking an order, closing a bill, counting the drawer) completes locally with zero network. Sync is a background process that improves the experience but never gates it.

The stack that follows

Once you commit, the stack picks itself. SQLite as the database, because it is boring and indestructible. Rust for the core, because a POS that crashes during dinner service is not a product. Tauri for the shell, because restaurant hardware is cheap and electron-sized memory budgets are not available.

The business result

The pitch to a restaurant owner is one sentence: it works when the internet does not. No feature list beats that. Architecture was the product differentiator, which is why I think of local-first as a business decision that happens to be implemented by engineers.

  • Local-First
  • Rust
  • Tauri
  • SQLite