Logo Lanfrica

Bashsaha/spazasync

Domaine:

digital infrastructure

Type de record:

software
Créateur:
Bas
Hôte:
Mobile-first PWA for South African spaza shop owners — barcode scanning, stock management, WhatsApp summaries # Movestock A mobile-first PWA for South African spaza shop and small-retail owners. Open the app on an Android phone → scan a barcode → product is added to the sale → stock auto-deducts → see an in-app daily summary each evening. Built for owners with no technical background on mid-range phones with flaky data. > **New to this codebase?** Read ARCHITECTURE.md first — it explains how > the app is wired (auth, data flow, folder layout, compliance subsystem). CLAUDE.md > is the working reference (schema, conventions, workflow rules); ARCHIVE.md is the > phase-by-phase build history. --- ## Features - **Barcode scanning** — phone camera via `@zxing/browser`, no hardware scanner needed - **Sale flow** — scan → cart → complete; stock auto-deducted (FEFO batch consumption) - **Stock management** — stock take, manual adjustments, low-stock + expiry alerts, stock-loss report - **Teller management** — owner creates teller accounts (6-digit PIN); tellers are locked to the sale screen - **In-app daily summary** — today's revenue, sales count, and low-stock warnings on the dashboard - **Offline support** — sales queued to IndexedDB when offline; synced on reconnect - **Compliance module** — guided journey for SA spaza regulation (permits, CoA, CIPC, SARS) + R500M Spaza Shop Support Fund readiness - **Subscriptions** — PayFast (recurring card) or manual EFT (admin reconciles bank statements) - **PWA** — installable on Android; cache-first App Shell opens instantly --- ## Tech Stack | Layer | Choice | |---|---| | Framework | Next.js 16, App Router, TypeScript strict | | Styling | Tailwind CSS | | Database + Auth | Supabase (PostgreSQL, Row-Level Security, Supabase Auth) | | Payments | PayFast (cards) + manual EFT reconciliation | | Deployment | Vercel + Vercel Cron | | Validation | Zod | | Barcode | `@zxing/browser` | | Offline | IndexedDB via `idb` | | Timezone | `date-fns-tz` (`Africa/Johannesburg`) | | Testing | Vitest (~790 unit tests) | See `package.json` for exact …

Languages