ZimHomes is a Zimbabwe-focused property marketplace and management platform for rentals, property sales, owner listings, verified accommodation search, admin approvals, and local payment flows.
# Wana Imba
Wana Imba is a Zimbabwe-focused property marketplace and property-management platform.
Tagline: **Find, Rent, Buy, Manage.**
This workspace now contains a real starter structure plus the original static MVP prototype. It demonstrates:
- Accommodation and property search by city, suburb, purpose, type, and price
- Rental and sale listings
- Owner listing submission
- Admin listing approval
- Wana Imba managed-property service positioning
- Payment flow preview for listing fees, featured listings, viewing fees, rent, and deposits
## Project Structure
- `mobile/`: Expo React Native app for the customer, owner, payments, management, and admin flows.
- `backend/`: FastAPI API scaffold for properties, approvals, and payments.
- `docs/`: Product plan, API design, database schema, payment plan, and development guide.
- `index.html`, `styles.css`, `app.js`: Static prototype kept for quick visual preview.
## Quick Static Preview
Open `index.html` in a browser.
No install step is required for this version.
## Backend
The `backend` folder contains a FastAPI scaffold for properties, admin approval, and payment initiation.
```bash
cd backend
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
.venv\Scripts\uvicorn main:app --host 0.0.0.0 --reload
```
Then open `
127.0.0.1` for the API explorer.
The backend creates a local SQLite database at `backend/zimhomes.db` by default. Demo admin login:
```text
Email: admin@zimhomes.local
Password: AdminPass123
```
Property photos uploaded during local development are stored under `backend/uploads/` and served from `/uploads/...`.
Payments are Paynow-ready. Without `PAYNOW_INTEGRATION_ID` and `PAYNOW_INTEGRATION_KEY`, the backend uses demo mode and creates pending references without charging customers.
## Mobile App
```bash
cd mobile
npm install
npm run start
```
The mobile app currently calls `
127.0.0.1`. If testing on a physical phone, update `mobile/src/api/client. …