All Projects
Confidential context: Retail desktop operationsDesktop systemLiveConfidential-safe

QA Appliance

Appliance-store sales, inventory, installment accounts, payments, reports, and maintenance became one local-first desktop system.

QA Appliance cover screenshot

How the project is put together

Architecture map

6 layers / 5 directed links

100%

invokescommandstransactslocal scopepackaged in
  1. 01
    Interface

    Dashboard, inventory, sales, accounts, payments, reports, imports, and maintenance screens.

    React 19 / Vite 7 / Tailwind v4 / shadcn/ui
  2. 02
    Application

    Desktop state, forms, reports, exports, charts, and workflow helpers.

    Zustand / React Hook Form / Zod / Recharts
  3. 03
    Services/API

    IPC commands handle sales, inventory, account operations, maintenance, import, and export.

    Tauri 2 / Rust commands / Dialog/fs plugins
  4. 04
    Data

    Local app-data database with stock, serials, customers, sales, payments, and audit records.

    SQLite / rusqlite / WAL / Migrations
  5. 05
    Auth/Permissions

    Not part of this local-first scope; the app is designed around single-device store operation.

    No cloud auth / Local device scope
  6. 06
    Runtime

    Native desktop packaging with local data recovery, reset, and operational maintenance tools.

    Tauri runtime / Cargo / NSIS / Backup/restore

From broken workflow to operating system

Inventory, serial numbers, receivables, payments, and backups were hard to keep consistent without a dedicated tool.

A Tauri/Rust/SQLite app runs locally with transactional sales, installment tracking, reports, and recovery tools.

The workflow constraint

The store needed a practical desktop tool for inventory and receivables without depending on a cloud backend, server setup, or always-on internet connection.

What changed

Local-first inventory, sales, accounts, and payment workflows
Transactional stock and installment account updates
PDF, Excel, CSV, import, export, backup, and restore support
Native Tauri desktop runtime without a cloud backend

Decisions and trade-offs

Local-first Tauri over web app deployment

The business needed reliable desktop use without managing hosting, networking, or cloud database access.

Decision: Built a Tauri app with React UI and Rust/SQLite backend commands for all core workflows.

Trade-off: No built-in multi-branch sync, but installation and day-to-day operation stay simple.

Transactional sales workflow

A sale touches stock, serial numbers, receivables, payment schedules, audit data, and reports.

Decision: Use SQLite transactions through Rust commands so related updates succeed or fail together.

Trade-off: More careful backend command design, but fewer partial-state failures in real store use.

Maintenance tools inside the app

The target users need to handle backups and data exports without developer help.

Decision: Expose backup, restore, reset, PDF/Excel/CSV export, and import flows directly in the desktop UI.

Trade-off: More surface area to test, but the app is much more operationally useful.

Constraints, architecture, and proof

React, Vite, TypeScript, Tailwind, Zustand, forms, charts, and export helpers run in the UI. Tauri IPC calls Rust commands backed by rusqlite and SQLite in the OS app data directory, with migrations, WAL/foreign keys, pre-migration backups, spreadsheet import/export, and PDF/Excel reporting.

Must run locally without a cloud backend or server setup
Sales need to update stock, serial numbers, accounts, and payment schedules atomically
Installment accounts require penalties, rebates, restructuring, and payment history
Nontechnical users need reliable backup, restore, import, and export workflows
Desktop distribution should use Tauri installers instead of a heavy Electron package

Deployment, security, and maintenance

SQLite runs with WAL and foreign keys, migrations create pre-migration backups, sales are transactional, app data stays local in the OS app directory, and maintenance screens expose backup/restore/reset workflows for recovery.

Honest edges and next improvements

No role/auth model is included in the current local-first scope.
No cloud backend or multi-device sync is included by design.

What I would improve next

Add explicit role/auth model if multi-user desktop use becomes required
Add optional sync or remote backup for multi-device operations
Normalize long-term audit and reporting retention policies

Screenshots from the build