How jdmrtne/bonbean works
Coffee Cart POS is an offline-first, mobile sales-recording app for a coffee-cart owner. Its principal workflow is to select products, review the cart, choose payment details, and save a sale; separate screens support sales history, reporting, catalog and payment configuration, register sessions, and backup/restore. The architecture separates route-level screens and UI components from business services and IndexedDB. The source index and excerpts establish the main storage and reporting links; some unsampled screen interactions are therefore omitted or marked unverified.
Main entry points: PosPage.tsx Point of sale · App.tsx App routes · db.ts IndexedDB · ReportsPage.tsx Sales reports
Components 22
App and POS
- App routes
src/App.tsx - Point of sale
src/pages/PosPage.tsx - Cart and checkout
src/components/CartPanel.tsx - Checkout details
src/components/CheckoutModal.tsx
Sales Operations
- Sales history
src/pages/HistoryPage.tsx - Sales reports
src/pages/ReportsPage.tsx - Sale records
src/services/salesService.ts - Report calculations
src/utils/reportStats.ts - Sales export
src/utils/salesExport.ts - Register sessions
src/services/registerService.ts - Register closeout
src/components/CloseRegisterModal.tsx
Catalog and Settings
- Product management
src/components/ProductsManager.tsx - Category management
src/components/CategoriesManager.tsx - Payment methods
src/components/PaymentMethodsManager.tsx - Business settings
src/services/settingsService.ts - Backup manager
src/components/BackupManager.tsx - Backup service
src/services/backupService.ts
Local Data and Offline
- IndexedDB
src/database/db.ts - Cart state
src/hooks/useCart.ts - Worker registration
src/pwa/registerServiceWorker.ts - Service worker
public/sw.js
Other components
- Cart owner
Connections 28
- Cart owner → App routes: opens
README.md - App routes → Point of sale: routes to
src/App.tsx - App routes → Sales history: routes to
src/App.tsx - App routes → Sales reports: routes to
src/App.tsx - Point of sale → Cart and checkout: renders
src/pages/PosPage.tsx - Point of sale → Checkout details: renders
src/pages/PosPage.tsx - Point of sale → Product management: uses catalog
src/pages/PosPage.tsx - Point of sale → Category management: loads categories
src/pages/PosPage.tsx - Point of sale → Payment methods: loads methods
src/pages/PosPage.tsx - Point of sale → Register sessions: checks register
src/pages/PosPage.tsx - Point of sale → Business settings: loads settings
src/pages/PosPage.tsx - Point of sale → Sale records: saves sale
- Point of sale → Cart state: maintains cart
src/pages/PosPage.tsx - Sales reports → Sale records: loads sales
src/pages/ReportsPage.tsx - Sales reports → Report calculations: calculates totals
src/pages/ReportsPage.tsx - Sales reports → Sales export: exports report
src/pages/ReportsPage.tsx - Product management → Category management: loads categories
src/components/ProductsManager.tsx - Product management → IndexedDB: updates products
- Category management → IndexedDB: stores categories
- Payment methods → IndexedDB: stores methods
- Sale records → IndexedDB: writes and reads
src/services/salesService.ts - Register sessions → IndexedDB: stores sessions
src/services/registerService.ts - Register closeout → Register sessions: closes shift
- Backup manager → Backup service: imports and exports
src/components/BackupManager.tsx - Backup service → IndexedDB: reads and restores
src/services/backupService.ts - App routes → IndexedDB: waits for readiness
src/App.tsx - App routes → Worker registration: registers offline support
src/main.tsx - Worker registration → Service worker: registers script
src/pwa/registerServiceWorker.ts