How alfaqih94/si-kasir works
Kedai Kopi POS is a branch-aware point-of-sale and administration app. Staff sign in, are routed by role, and cashiers build orders from available products; checkout uses a Firestore transaction for the sale and tracked stock. Admins manage products, branches, users, and stock, and review sales dashboards and reports. The sampled pages show direct Firebase access rather than a shared application service layer. Several page excerpts are partial, so uncertain calls between pages and the admin user-update route are not shown.
Main entry points: firebase.js Firebase client · login/page.js Sign in · users/page.js User management · AuthContext.js Auth context
Components 19
Identity and access
- Sign in
src/app/login/page.js - Auth context
src/context/AuthContext.js - Protected routes
src/components/ProtectedRoute.js
Point of sale
- Cashier POS
src/app/kasir/page.js - Cashier report
src/app/kasir/report/page.js - Cashier profile
src/app/kasir/profile/page.js
Administration
- Admin dashboard
src/app/admin/page.js - Product management
src/app/admin/products/page.js - Branch management
src/app/admin/stores/page.js - Stock management
src/app/admin/stocks/page.js - User management
src/app/admin/users/page.js - Daily sales
src/app/admin/daily/page.js - Sales reports
src/app/admin/reports/page.js - Auth update API
src/app/api/admin/users/update/route.js
Firebase services
- Firebase client
src/lib/firebase.js - Firestore
- Firebase Auth
- Firebase Admin Auth
Other components
- Staff
Connections 20
- Staff → Sign in: submits credentials
- Sign in → Auth context: signs in
- Auth context → Firebase client: observes auth; loads profile
- Sign in → Firebase client: reads role
- Firebase client → Firebase Auth: authenticates
- Firebase client → Firestore: reads and writes
- Sign in → Protected routes: routes by role
- Staff → Cashier POS: uses POS
- Cashier POS → Firebase client: loads products; checks out
- Cashier report → Firebase client: reads sales data
- Cashier profile → Firebase client: accesses profile data
- Admin dashboard → Firebase client: reads sales data
- Product management → Firebase client: manages products
- Branch management → Firebase client: manages branches
- Stock management → Firebase client: reads and saves stock
- User management → Firebase client: manages user profiles
- User management → Firebase Auth: creates user accounts
- Daily sales → Firebase client: reads daily sales data
- Sales reports → Firebase client: reads and deletes transactions
- Auth update API → Firebase Admin Auth: updates credentials