How meezaan-dev/accounting-software works
Accounting Workspace is a Firebase-backed bookkeeping app for a South African small-business administrator. The main flow is email/password sign-in, exchange of a recent Firebase ID token for a session cookie, server-side session verification, then company-scoped accounting work backed by Firestore. That work spans company setup, contacts and jobs, financial documents and conversions, purchases, receipt allocation, and reports; document previews can be exported as PDFs. The sampled data layer confirms Firestore subscriptions and writes. Dashboard feature wiring and several capabilities are documented but their implementation was not sampled, so links below indicate only documented ownership, not uninspected call chains.
Main entry points: accounting.ts Accounting data layer · AccountingApp.tsx Accounting interface · page.tsx Sign-in page · EmailPasswordSignInForm.tsx Email sign-in
Components 24
Access and sessions
- Sign-in page
app/(landing)/page.tsx - Email sign-in
components/auth/EmailPasswordSignInForm.tsx - CSRF endpoint
app/api/auth/csrf/route.ts - Session endpoint
app/api/auth/session/route.ts - Session verification
services/auth.ts
Accounting workspace
- Dashboard routes
app/dashboard/[section]/page.tsx - Accounting interface
features/accounting/components/AccountingApp.tsx - Accounting reports
app/dashboard/[section]/page.tsx
Books and documents
- Accounting data layer
features/accounting/lib/accounting.ts - Company profiles
features/accounting/lib/accounting.ts - Customers and suppliers
features/accounting/lib/accounting.ts - Jobs
features/accounting/lib/accounting.ts - Financial documents
features/accounting/lib/accounting.ts - Sequences and references
features/accounting/lib/accounting.ts - Document preview
features/accounting/components/DocumentPreview.tsx - PDF export
features/accounting/lib/export-document.ts - Purchases and expenses
features/accounting/lib/accounting.ts - Receipt allocation
features/accounting/lib/accounting.ts - Company logo handling
services/company-logo.ts
Firebase services
- Firebase Admin
services/firebase/admin.ts - Firebase client
services/firebase/client.ts - Cloud Firestore
- Firestore rules
firestore.rules
Other components
- Administrator
Connections 25
- Administrator → Sign-in page: opens
- Sign-in page → Session verification: checks session
- Sign-in page → Email sign-in: renders
- Email sign-in → CSRF endpoint: requests token
- Email sign-in → Session endpoint: submits ID token
- Session endpoint → Firebase Admin: verifies token
- Session endpoint → Administrator: sets session cookie
- Dashboard routes → Session verification: verifies session
- Session verification → Firebase Admin: verifies cookie
- Dashboard routes → Accounting interface: renders workspace
- Accounting interface → Accounting data layer: reads and updates
- Accounting data layer → Firebase client: uses client
- Firebase client → Cloud Firestore: reads and writes
- Firestore rules → Cloud Firestore: constrains access
- Accounting data layer → Company profiles: manages
- Accounting data layer → Customers and suppliers: manages
- Accounting data layer → Jobs: manages
- Accounting data layer → Financial documents: manages and converts
- Accounting data layer → Sequences and references: allocates numbers
- Accounting data layer → Purchases and expenses: records
- Accounting data layer → Receipt allocation: allocates payments
- Accounting interface → Document preview: opens preview
- Document preview → PDF export: exports PDF
- Accounting interface → Accounting reports: presents reports
- Accounting interface → Company logo handling: uses logo handling