Skip to main content
Joel MayJoel May

Offline-First Point of Sale That Keeps Selling Without Internet

MobileReact NativeExpoNestJSPostgreSQL
Offline-first synchronization for uninterrupted operation

The Challenge

  • Full offline operation: The system must sell without internet; transactions are queued locally
  • Sync on reconnect: Automatic reconciliation with the server when connectivity returns, without data loss
  • Feature-sliced architecture: Separation of concerns in layers: route → screen → hook → service for maximum maintainability
  • Consistent mobile UI: Tamagui + NativeWind for performant and responsive mobile UI components

Solution Architecture

RouteFeature-slicedDomainSyncStyledExpo RouterScreenDomain HookServiceOffline Sync LayerNestJS APIPostgreSQLTamagui + NativeWind
System architecture diagram showing nodes and connections

POS App

React Native + Expo (Expo Router). Feature-sliced architecture: route → screen → hook → service. NativeWind for responsive styling.

Offline Layer

Offline sync layer that queues operations when no connection is available and reconciles with the server when connectivity returns.

Styling

Tamagui component system + NativeWind utility classes for consistent, performant mobile UI.

Backend

NestJS API with PostgreSQL. Handles sync reconciliation, conflict resolution, and transactional guarantees.

Results

Offline-first

Full operation without internet

Auto-sync

Reconciles with server on reconnect

FSD

Feature-sliced architecture

POS - Offline-First Point of Sale | Joel May