Home Maintenance — hire trusted local workers in Zimbabwe. Dedicated to Changing Lives.
# Home Maintenance
**"Dedicated to Changing Lives"** — hire vetted local home-service workers in Zimbabwe.
React 18 + Vite SPA backed by Appwrite (project `homemaintenance`, database `main`).
## Features
- Splash screen + first-open 3-step onboarding (localStorage flag)
- Browse approved workers with search, category chip filters, and a prominent area filter in the hero (Mutare launch areas seeded; managed by admin)
- Workers auto-sorted: available first, then rating, review count, jobs done
- Public stats (Workers / Available Now)
- Email+password auth (Appwrite Accounts)
- "Register as Worker" flow (profiles go live after admin review)
- Instant hire flow: booking form (address, optional GPS, description, schedule) → PayNow Zimbabwe payment screen (EcoCash / OneMoney / Telecash / ZIPIT / Visa-Mastercard) → escrow booking with `HM-XXXXXX` reference
- My Bookings: confirm job done (releases worker, prompts star rating) and request refund after 24h in escrow
- Booking confirmation offers a one-tap WhatsApp message to the worker with the job details (free; SMS gateway not yet connected)
- Ratings & reviews with client-side worker rating recompute
- Worker dashboard: profile status, availability toggle, jobs, notifications
- Complaints form
- Notification bell with unread badge, mark-as-read, ~30s polling + refresh on navigation
- Admin panel (`/admin`, members of Appwrite team `admins`): stats incl. customers & platform earnings, direct worker registration (added workers are approved instantly), worker approvals/suspension, bookings & payment history with status actions, complaints inbox, category price editor, service-area manager
## Run
```bash
npm install
npm run dev # local dev
npm run build # production build (dist/)
```
Deployed as a static SPA — the host must serve `index.html` as fallback for all routes.
## Configuration
Public client values (Appwrite endpoint, project id, database id, collection ids, admin team id, fee rate) live in `src/lib/co …