# ⚙️ Equipment Rental Marketplace — Kenya
A full-stack equipment rental marketplace built for the Kenyan market. Users can list equipment for rent, browse available items, book rentals, and pay via **M-Pesa Daraja API**. Built with a modern React frontend and a Node.js/Express backend.
---
## 🧰 Tech Stack
| Layer | Technology |
| --------- | ------------------------------------------------------------ |
| Frontend | React 19, TypeScript, Tailwind CSS, Zustand, React Router |
| Backend | Node.js, Express, TypeScript, Mongoose |
| Database | MongoDB |
| Payments | M-Pesa Daraja API (STK Push), Stripe |
| Media | Cloudinary (image upload & transformation) |
| Auth | JWT (JSON Web Tokens) |
| Email | Nodemailer (email verification) |
---
## 🚀 Features
- **User Authentication** — Register, login, email verification, role-based access (renter / owner / admin)
- **Equipment Listings** — Create, edit, delete listings with multiple images; search, filter, and pagination
- **Booking System** — Date selection, cost calculation, approve/reject by owner, auto-complete tracking
- **Payments** — M-Pesa STK Push (sandbox); Stripe integration for card payments
- **Reviews & Ratings** — Star rating (1-5), comments, per-booking constraint; aggregate ratings on listings
- **Dashboards** — Renter dashboard (active/completed bookings) and Owner dashboard (listings, earnings, incoming requests)
- **Responsive UI** — Tailwind CSS, mobile-friendly layout, loading skeletons, toast notifications
---
## 📦 Project Structure
```
equipment-rental/
├── client/ # React frontend (Vite)
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── pages/ # Page components
│ │ ├── services/ …