Mobile-first rental management for landlords and tenants in The Gambia
# RentBook
**The easiest way to manage rent, tenants, payments, and compound operations.**
RentBook is a mobile-first rental and compound management platform built for small landlords, caretakers, and tenants — starting in The Gambia and expandable across Africa and globally.
## Tech Stack
- **Frontend:** Angular 19 + PWA (offline-capable)
- **Backend:** Firebase Authentication, Firestore, Storage, Cloud Functions (planned)
## Phase 1 Features (Current)
- User authentication (Owner, Caretaker, Tenant roles)
- Dashboard with rent collection overview
- Property & unit management (compounds, apartments, rooms, shops, offices)
- Tenant management with contact details and rent tracking
- Payment recording (Wave, AfriMoney, QMoney, Bank Transfer, Cash)
- Payment status tracking (Paid, Upcoming, Late, Partial)
- Digital receipt numbers
- Mobile bottom navigation
## Phase 2 Features (Current)
- **Maintenance requests** — Submit, filter, and track Open → Assigned → Completed
- **Expense tracking** — Water, electricity, repairs, cleaning, security, and other costs
- **Shared utility billing** — Split compound bills among households with auto per-household calculation
- **Reports** — Monthly income, expenses, and net profit
- **Property tabs** — Expenses and shared bills on each property detail page
## Getting Started
### Prerequisites
- Node.js 18+
- A Firebase project
### 1. Firebase Setup
1. Create a Firebase project at Firebase Console
2. Enable **Authentication** → Email/Password sign-in
3. Create a **Firestore Database** (start in test mode, then deploy rules)
4. Copy your Firebase config from Project Settings → General → Your apps
### 2. Configure Environment
Edit `src/environments/environment.development.ts` with your Firebase credentials:
```typescript
export const environment = {
production: false,
firebase: {
apiKey: 'your-api-key',
authDomain: 'your-project.firebaseapp.com',
projectId: 'your-project-id',
storageBucket: 'your-project.appspot.com',
me …