Batanai — Technical Documentation¶
Welcome to the Batanai developer wiki. This covers every feature of the Batanai expense-sharing platform in detail, including backend (.NET 10 API) and frontend (Angular 21 PWA) implementation for each feature.
Architecture Quick Reference¶
| Layer | Technology |
|---|---|
| Frontend | Angular 21, Angular Material, Progressive Web App (PWA) |
| Backend | ASP.NET Core 10, Entity Framework Core, PostgreSQL |
| Authentication | JWT Bearer, WebAuthn/FIDO2 (Fido2NetLib), TOTP MFA |
| Push Notifications | Web Push (VAPID), Service Worker |
| Offline Support | IndexedDB offline queue, Service Worker caching |
| Background Jobs | .NET Hosted Services (IHostedService) |
User Roles¶
| Role ID | Role | Access Level |
|---|---|---|
| 1 | SuperAdmin | Full system access |
| 2 | Admin | Manage users, cycles, app config |
| 3 | Member | Participate in cycles, add expenses, submit payments |
Feature Documentation¶
| # | Feature | Summary |
|---|---|---|
| 1 | Authentication | Login, signup, MFA, password reset, JWT token lifecycle |
| 2 | Biometric Authentication | WebAuthn/FIDO2 passwordless login and credential management |
| 3 | Dashboard | Role-based navigation cards and time-of-day greeting |
| 4 | Expense Cycles | Expense cycle management, member balances, close workflow |
| 5 | Profile | Profile sub-pages: name/password, MFA, biometric, devices, reports, notifications |
| 6 | Notifications | In-app notification bell inbox, Web Push pipeline, and per-user preferences |
| 7 | Management (Admin Hub) | Centralised admin hub: users, cycles, reports, app config |
| 8 | Offline Queue | IndexedDB offline queue with 24-hour TTL and auto-sync on reconnect |
| 9 | Push Notifications | VAPID Web Push pipeline and service worker handler |
| 10 | Feature & Bug Reports | User-submitted feature requests and bug reports with admin review workflow |
| 11 | App Configuration | Runtime key-value configuration store with secret masking and bulk update |
| 12 | Business Overview | Platform summary: problem, solution, market, and revenue model |
Setting Up the Wiki¶
These docs live in docs/technical documents/ in the main repository.
To publish / update the GitHub Wiki:
# Clone the wiki repo (separate from the main repo)
git clone https://github.com/CarolineChirenje/Batanai.wiki.git
cd Batanai.wiki
# Copy all docs — rename files to match wiki page names (no spaces, use hyphens)
# Home.md ? this file (wiki landing page)
# Authentication.md
# Biometric-Authentication.md
# Dashboard.md
# Cycles.md
# ... etc
# Stage, commit, push
git add .
git commit -m "docs: update wiki"
git push