first free services marketplace in Zambia
# Services Marketplace
A full-stack MVP for booking trusted local services. It includes multi-role authentication, worker listings, geospatial search, bookings, two-way reviews, moderation, real-time chat, reporting, appeals, recommendations, admin tools, and seed data. Monetization features are intentionally excluded for Phase 2.
## Prerequisites
- Node.js 22+
- npm
- Docker and Docker Compose
- MongoDB Atlas account or local MongoDB via Docker
- Plivo account for production SMS
- SMTP account for production email
## Installation
```bash
npm install
cp .env.example .env
npm run docker:up
npm run seed
npm run dev
```
Client:
localhost
Server API:
localhost
## Environment Variables
- `MONGODB_URI`: MongoDB Atlas or local connection string
- `SESSION_SECRET`: Express session secret
- `SMS_PROVIDER`: `plivo`
- `PLIVO_AUTH_ID`, `PLIVO_AUTH_TOKEN`, `PLIVO_PHONE_NUMBER`: SMS credentials
- `EMAIL_HOST`, `EMAIL_PORT`, `EMAIL_USER`, `EMAIL_PASS`, `EMAIL_FROM`: SMTP settings
- `CLIENT_URL`: frontend origin
- `SERVER_URL`: backend URL
- `PORT`: API port
When SMS or email credentials are missing, the services log mock notifications to the server console.
## Default Test Credentials
All seed users use password `Password123!`.
- `client1@example.com`
- `client2@example.com`
- `plumber@example.com`
- `electrician@example.com`
- `hairdresser@example.com`
- `admin@example.com`
- `superadmin@example.com`
## API Summary
- `POST /api/auth/register`, `POST /api/auth/login`, `POST /api/auth/logout`
- `POST /api/auth/initiate-password-reset`
- `POST /api/auth/verify-security-and-send-otp`
- `POST /api/auth/reset-password`
- `GET/PUT /api/users/profile`, `PUT /api/users/location`
- `GET /api/workers`, `GET /api/workers/nearby`, `GET /api/workers/:id`
- `POST/PUT/DELETE /api/workers/services`
- `POST /api/bookings`, `GET /api/bookings`, booking status actions
- `POST /api/reviews`, moderation, replies, flags
- `GET /api/messages/booking/:bookingId`, con …