Skip to content

This site uses no tracking cookies — just the session cookies that keep the admin panel and blog accounts signed in, plus an anonymous page-view counter.

Omar Mohamed
WorkAboutStackNotesContact
Let's talk
  1. Home
  2. Work
  3. Offline-first PWA that runs a furniture showroom and its workshop end to end — quotes to installments to payroll

Business Operations Software · 2026

Offline-first PWA that runs a furniture showroom and its workshop end to end — quotes to installments to payroll

Offline-first PWA that runs a furniture showroom and its workshop end to end — quotes to installments to payroll.

Furniture

Details

Updated
Nov 2026
Role
Sole developer — product design, data model, business rules, UI, testing
Timeline
Nov 2026
Outcome
A working Phase-1 release used on a single device, with an architecture ready for multi-device sync: local-first storage today, a repository interface that can swap in a Postgres backend later. Every money rule (VAT optional, advance repayment capped, no negative net pay, installments paid oldest-first) is enforced in the service layer rather than the UI.
React 18ViteTailwind CSS 4Dexie (IndexedDB)PWA / WorkboxSheetJS (xlsx)html-to-image + jsPDF

An Arabic-first (RTL) management system for furniture showrooms that also manufacture their own pieces: purchase invoices for raw materials, sales invoices with installment plans, a live inventory, customer and supplier debts, worker advances and monthly payroll, expenses, account statements and full reports — all in one device. The tricky part was the data model, not the screens. Stock is an append-only ledger, never an editable number, so every movement has an effect that can be reversed when an invoice is voided. Money is stored as integer piasters, so totals never drift from floating-point rounding. Voiding, editing, restoring a backup and running payroll each happen inside a single IndexedDB transaction. It ships as an installable PWA that works with no connection at all after the first load, because showroom Wi-Fi is unreliable. A versioned, checksummed JSON backup replaces the whole database in one transaction, and the repository layer is separated from the screens so the same UI can move to Neon/Postgres later without a rewrite.

Results

22

Data tables in the local model

~190

Documented test cases (Arabic)

Yes

Works fully offline after first load

Integer piasters, no floats

Money precision

Reversed via ledger, never deleted

Voided invoices

None — IndexedDB (Neon-ready)

Server dependency today

Gallery

Want something similar?

WhatsApp me
All workNext projectSufra OS — Offline-First Restaurant POS & Micro-ERP

Let's work together.

WhatsAppEmail

One email when a new project ships — no noise, unsubscribe anytime.

Newsletter

Elsewhere

GitHub
© 2026 Omar Mohamed. Built with care in Damietta, Egypt.Back to top