Web / PWA · Builder
Tailor Measurement App.
A phone-first, offline-capable PWA built for a small tailor shop: record customer measurements, track multi-garment orders, manage garment templates, and queue photos offline. React + Firebase with a strictly layered, unit-tested core, in English and Gujarati.
- Role
- Builder
- When
- 2026
- Stack
- React, TypeScript, Firebase, Zustand
- Scale
- Offline-first PWA
offline-first · React · FirebaseOffline-firstPWA
Pure domain14 test files
en + gubilingual
Free tierFirebase
The problem
A small tailor shop works on phones, often with a weak connection, and needs to capture measurements and track orders without fighting the tool. The app had to be phone-first, keep working offline (including photos), stay free to run, and be usable by staff in their own language, while keeping the code maintainable enough to extend.
What it does
- An offline-first PWA: Firestore offline persistence for data, an IndexedDB photo queue for deferred uploads, and a Workbox service worker, so the app keeps working with no connection and syncs when it returns.
- A strictly layered codebase: a pure, unit-tested domain layer that never imports React or Firebase, an isolated Firebase infrastructure layer, a Zustand store fed by realtime Firestore listeners, and UI that only reads the store and writes through one repository module.
- The tailor's actual workflow: customer measurements, multi-garment orders, reusable garment templates, and measurement pre-fill from a customer's most recent order.
- Bilingual (English and Gujarati), and deliberately cost-free, a single shared shop login on Firebase's free tier keeps it simple for staff and cheap for the owner.
Impact
- Works on a phone with a flaky connection: measurements and orders are captured offline and photos queue locally until they can upload.
- The pure domain layer is covered by unit tests (14 test files across domain, photos, i18n, and theme), so the logic that matters is verified independently of Firebase and the UI.
- Built for the people using it: a Gujarati translation alongside English, and a UI shaped around how a tailor actually takes and reuses measurements.