Native Android app for Zimbabwe Territorial Band (ZTB) — manages member finances, payment tracking, and band information with role-based access for Members, Treasurers, and Admins. Built with Kotlin, Jetpack Compose, and Firebase.
# ZTB (Zimbabwe Territorial Band) Android App
A native Android application built with Kotlin, Jetpack Compose, Material 3, and Firebase for the Zimbabwe Territorial Band (ZTB). The application seamlessly combines band management, member roster tracking, public/band information, and role-based financial event management.
---
## Features & Architecture
### Role-Based Access Control
- **Member**: Views home overview, roster with member performance status pills (🔴 🟠 🟢), band information (History, Leadership, Projects, Events Calendar, Public Funds chart), and profile. (No financial numbers exposed).
- **Treasurer**: All Member capabilities plus full access to the **Finance** tab (creating payment events, toggling member payment statuses, viewing financial dashboard & charts).
- **Admin**: All Treasurer capabilities plus full access to the **Admin Panel** (managing members, promoting roles, deactivating accounts, and editing all band content).
### Key Modules
1. **Auth & Security**: Firebase Auth with Email/Password & Google Sign-In support. Quick demo login accounts for testing.
2. **Performance Status Engine**:
- 🟢 **GREEN**: All current period payments marked Received.
- 🟠 **ORANGE**: Current period payment exists but not yet marked Received.
- 🔴 **RED**: One or more previous period payments still outstanding/overdue.
3. **Finance Hub**: Event creation, automated payment generation for members, real-time status toggling, and interactive Compose Canvas pie/donut charts.
4. **Band Info**: 5-tab hub with rich historical context, leadership board, annual projects, gig calendar, and transparent public fundraising charts.
5. **Admin Panel**: Role promotion, new member provisioning, content editor.
---
## Project Structure
```
app/src/main/java/com/example/
├── ZTBApplication.kt
├── MainActivity.kt
├── data/
│ ├── model/
│ │ ├── User.kt
│ │ ├── PaymentEvent.kt
│ │ ├── Payment.kt
│ │ └── BandInfo.kt
│ ├── repository/
│ │ ├── AuthRepository.kt
│ …