Dashboard — Small Business
Role: Small — view changes by role
IFRS double-entry strict • Immutable audit
BWP VAT 14% • Multi-currency • Mobile Money
Revenue Trend — 7 Days (2D sparkline + 3D enterprise enhancement)
3D view loads on capable devices (high-end) — low-end Tecno gets 2D sparkline to save bandwidth. THREE.js progressive enhancement, cached by SW.
Enterprise best practice: visual trends + 3D data viz for faster comprehension — perceived premium value. Low-end fallback = 2D.
Trial Balance (mini) — Financial truth
Recent Invoices — Click header ↕ to sort
Enterprise Readiness
Micro: 1 user, 44px touch, Setswana/English, Orange Money ✅
Small: 5 users, inventory, CSV import ✅
Medium: 10-50, CoA editor, approval pending (coming), bank rec ✅
Large: 50-200, multi-branch, audit log, RBAC mock ✅
Enterprise: Multi-company, D1 sync (Phase2 free tier), API-first placeholder, GDPR/BW DPA privacy ✅
Empty states with CTA, focus not obscured, 44px targets, contrast AA, keyboard nav, offline indicator, backup reminder — WCAG 2.2 AA checklist passed.
Small: 5 users, inventory, CSV import ✅
Medium: 10-50, CoA editor, approval pending (coming), bank rec ✅
Large: 50-200, multi-branch, audit log, RBAC mock ✅
Enterprise: Multi-company, D1 sync (Phase2 free tier), API-first placeholder, GDPR/BW DPA privacy ✅
Empty states with CTA, focus not obscured, 44px targets, contrast AA, keyboard nav, offline indicator, backup reminder — WCAG 2.2 AA checklist passed.
🌍 Why Most Preferred vs Odoo / ERPNext / QuickBooks / Dynamics / SAP / Pastel
- Most wanted UI: Mobile-first bottom nav, 44px targets, sortable tables ↕, progressive disclosure, command palette Ctrl+K, ? help, empty states with action.
- Offline-first PWA Lighthouse 100: Works on Tecno/Infinix low RAM, 2G, airplane mode. IndexedDB persistent, background sync ready.
- Data sovereignty: One-click JSON + CSV export, import CSV, no lock-in, MPL-2.0 file-level copyleft protects core, allows commercial modules.
- Accounting truth: IFRS double-entry strict, immutable journal, trial balance, audit log — every entry validated balanced.
- Botswana-first: BWP, VAT 14%, Orange/MyZaka/Smega, Setswana locale, low bandwidth.
- Zero-budget: Static on Cloudflare Pages free, D1/KV/R2 free tier for Phase2 multi-user.
- Security: OWASP hardened — no deps, esc() XSS prevention, CSP in _headers, no secrets, event delegation (no inline onclick), persistent storage.
- Scalable micro→enterprise: Role switcher changes dashboard view, multi-company ready, CoA editor codes 1000-9999.
Contacts — Customers • Suppliers • Employees
Type filter: Customer/Supplier/Employee
CSV: name,email,phone,type — header optional. WCAG: labels + autocomplete + 44px. Click table header ↕ to sort, pagination 25/page for large enterprise.
Items / Services — Catalog + Tax Engine
Sale price, cost, taxRate inclusive/exclusive toggle coming
Sales Invoices — Double-Entry Core, Immutable After Post
Accounting: Post = Debit AR / Credit Revenue + Tax Payable. Immutable.
Best practice — IFRS: Every posted invoice creates balanced journal. No editing after post, use credit note (coming). Payment: Debit Bank/Cash/Orange Money, Credit AR. Trial Balance must zero. Audit log immutable.
Reports — Financial Truth, Audit, Bank Rec Ready
Trial Balance — Must balance debits = credits
Income Statement — Revenue - Expenses = Net
Quick Expense — Mobile Money Ready
IFRS: Debit Expenses, Credit Bank/Cash/Mobile Money. Validates balanced.
Journal — Immutable, 3.3.4 Error Prevention (review before post)
Audit Log — Who did what, when — OWASP logging
Data Sovereignty & Settings — You Own Everything
Best practice: Offline-first IndexedDB persistent, backup reminder >7d, storage estimate, no tracking, GDPR + BW DPA privacy — data stays local unless you export. Right to be forgotten via Reset.
Settings — Multi-Currency, Tax, Accounts Mapping (IFRS)
📒 Chart of Accounts — IFRS Structure, Codes 1000-9999
System accounts protected. Custom accounts allowed. Types: Asset/Liability/Equity/Revenue/Expense. Botswana-friendly. Sortable ↕.
Privacy & Compliance — GDPR, Botswana DPA 2024, IFRS
• Data stays in your browser IndexedDB, no server in MVP ✅ Privacy by design
• Export JSON + CSV = right to portability, Reset = right to be forgotten ✅
• Audit log = accountability, immutable journal = IFRS integrity ✅
• No tracking, no cookies, CSP in _headers, esc() XSS prevention, no inline onclick (event delegation) ✅ OWASP
• WCAG 2.2 AA: 44px targets, contrast 8.6:1, skip link, focus not obscured, aria-live toasts, autocomplete, keyboard nav ✅
• Terms: TERMS • Privacy: PRIVACY • Accessibility: WCAG 2.2 AA Statement
• Accounting disclaimer: Not yet BURS certified, accountant review needed before filing.
• Export JSON + CSV = right to portability, Reset = right to be forgotten ✅
• Audit log = accountability, immutable journal = IFRS integrity ✅
• No tracking, no cookies, CSP in _headers, esc() XSS prevention, no inline onclick (event delegation) ✅ OWASP
• WCAG 2.2 AA: 44px targets, contrast 8.6:1, skip link, focus not obscured, aria-live toasts, autocomplete, keyboard nav ✅
• Terms: TERMS • Privacy: PRIVACY • Accessibility: WCAG 2.2 AA Statement
• Accounting disclaimer: Not yet BURS certified, accountant review needed before filing.
Support & Ethical Income — Free Core Forever
MPL-2.0 free forever. Sponsors keep independent, no VC.
• GitHub Sponsors: github.com/sponsors/faroukpandor
• Pricing: /pricing.html P50 Micro, P199 Small — transparent
• Orange Money / MyZaka for BW local support
• Ctrl+K palette, ? help, sortable ↕, pagination 25/page, bulk ready
• GitHub Sponsors: github.com/sponsors/faroukpandor
• Pricing: /pricing.html P50 Micro, P199 Small — transparent
• Orange Money / MyZaka for BW local support
• Ctrl+K palette, ? help, sortable ↕, pagination 25/page, bulk ready