Debt & sales tracking PWA for small jewelry businesses. Kinyarwanda l10n, WhatsApp integration.
Jewelry Ledger
Digital Payments & Debt Tracking Infrastructure for African SMBs
Architecture •
API Reference •
Roadmap
---
## Problem Statement
> **80%+ of African SMBs operate on informal credit** — goods are handed over with handshake promises, debts are tracked in notebooks, and payment reminders eat hours each week.
In Rwanda's jewelry sector, sellers lack:
- A digital record of who owes what
- Automated payment reminders in Kinyarwanda
- Profit/loss visibility across inventory and sales
- Offline-capable tools that work on $50 Android phones
**Jewelry Ledger** bridges the informal-to-formal gap with a Progressive Web App that works online, offline, and on Android — purpose-built for Kinyarwanda-speaking jewelry vendors.
---
## Architecture
```
React 18 PWA (Vite + TypeScript)
│
├── Tailwind CSS / shadcn/ui ──── Luxury-branded UI
├── TanStack Query ─────────────── Server-state & cache
├── jsPDF ──────────────────────── PDF debt/sales reports
└── @supabase/supabase-js ──────── Direct DB access
│
┌─────┴──────────────────────────┐
│ Supabase Stack │
│ PostgreSQL 14 │ Auth │ RLS │
└─────┬──────────────────────────┘
│
┌─────┴──────┐ ┌─────────────────┐
│ PWA (Vite)│ │ Android (Capacitor)│
│ Installable│ │ Native WebView │
│ Offline │ │ Play Store AAB │
└────────────┘ └─────────────────┘
```
Detailed architecture documentation: docs/ARCHITECTURE.md
### Tech Stack
| Layer | Choice | Rationale |
|-------|--------|-----------|
| **Frontend** | React 18, TypeScript 5, Vite 5 | Fast dev, type safety, tree-shaking |
| **UI** | Tailwind CSS v4, shadcn/ui | Utility-first + accessible primitives |
| **State** | TanStack React Query v5 | Auto-caching, background sync, devtools |
| **Backend** | Supabase (PostgreSQL 14) | Managed Postgres with built-in Auth & RLS |
| **Mobile** | Capacitor v8 | One codebase → PWA + Android |
| **PWA** | vite-plugin-pwa (Workbox) | Offline caching, installable |
| **PDF** | jsPDF + …