A comprehensive full-stack platform enabling customers to find, book, and pay skilled technicians for professional repairs, maintenance, and engineering services. Built with the MERN stack and featuring AI-powered matching, real-time communication, and M-Pesa payment integration.
π Visit the app: https://dumuwaks.ementech.co.ke
Production Ready! The platform is live and accepting real users. Create your account to start:
- Customers: Find and book skilled technicians for your maintenance needs
- Technicians: Showcase your skills and connect with customers
- Real Payments: Integrated M-Pesa payment system (Kenya)
- Real-Time Matching: AI-powered technician matching algorithm
# Clone the repository
git clone <repository-url>
cd dumuwaks
# Quick setup
cp .env.docker.example .env.docker
nano .env.docker # Configure your environment
# Start with Docker (Recommended)
./scripts/docker-dev.sh
# OR manual setup
cd backend && npm install && npm run dev
cd frontend && npm install && npm run devAccess the app:
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
- API Docs: http://localhost:5000/api-docs
π Detailed setup: See QUICK_START.md
- π Authentication & Authorization - JWT-based secure auth with role management
- π₯ User Management - Customer, Technician, Admin, Support roles
- π οΈ Service Booking - 99+ service types across 12 categories
- π° Smart Pricing - Dynamic pricing with distance, urgency, and time factors
- π³ M-Pesa Integration - Seamless mobile payments
- π€ AI Matching - Intelligent technician matching algorithm
- π¬ Real-time Messaging - In-app chat between customers and technicians
- π Location Services - Distance-based pricing and technician discovery
- β Rating & Reviews - Two-way rating system
- π« Support System - Comprehensive ticket-based support
- π³ M-Pesa Integration - Seamless STK Push payments
- π° Booking Fee System - 20% refundable deposit (held in escrow)
- π Completion Payment - Automatic collection of remaining balance
- πΈ Technician Payouts - 85% payout to technicians via M-Pesa B2C
- π Transparent Pricing - Clear breakdown of all fees
- π€ Automatic Processing - Platform commission (15%) handled automatically
- β‘ Dynamic Pricing - Based on urgency, distance, and time
- π± Admin Dashboard - Manage pending payouts and batch processing
- Service completion verification
- Matching preferences
- Session-based search
- Document encryption
- API rate limiting
- Comprehensive logging
- Runtime: Node.js 18+
- Framework: Express.js
- Database: MongoDB 7.0
- Cache: Redis
- Authentication: JWT
- Payment: M-Pesa Daraja API
- Documentation: Swagger/OpenAPI
- Testing: Jest
- Framework: React 18 + TypeScript
- Build Tool: Vite
- State Management: Redux Toolkit
- Routing: React Router v6
- Styling: Tailwind CSS
- HTTP Client: Axios
- UI Components: Custom component library
- Server: VPS (Ubuntu 24.04, PM2 + Nginx)
- CI/CD: GitHub Actions (zero-downtime deploy)
- SSL: Let's Encrypt / Certbot
- Containerization: Docker + Docker Compose (local dev)
- Monitoring: Health checks + PM2 logging
- Database: MongoDB Atlas (managed)
dumuwaks/
βββ backend/ # Node.js/Express API
β βββ src/
β β βββ controllers/ # Route controllers
β β βββ models/ # Mongoose models
β β βββ routes/ # API routes
β β βββ services/ # Business logic
β β βββ middleware/ # Custom middleware
β β βββ utils/ # Utility functions
β β βββ jobs/ # Background jobs
β β βββ server.js # Entry point
β βββ Dockerfile
β βββ package.json
β
βββ frontend/ # React/TypeScript app
β βββ src/
β β βββ components/ # React components
β β βββ pages/ # Page components
β β βββ store/ # Redux store
β β βββ services/ # API services
β β βββ utils/ # Utility functions
β β βββ App.tsx # Root component
β βββ Dockerfile
β βββ nginx.conf
β βββ package.json
β
βββ docs/ # Documentation
β βββ api/ # API documentation
β βββ deployment/ # Deployment guides
β βββ features/ # Feature documentation
β βββ guides/ # How-to guides
β βββ backend/ # Backend docs
β βββ fixes/ # Bug fixes & solutions
β
βββ scripts/ # Utility scripts
β βββ docker-dev.sh # Development deployment
β βββ docker-prod.sh # Production deployment
β
βββ docker-compose.yml # Development setup
βββ docker-compose.prod.yml # Production setup
βββ .env.docker.example # Environment template
βββ QUICK_START.md # Quick start guide
βββ README.md # This file
- Quick Start Guide - Get up and running in 5 minutes
- Environment Variables - Configuration reference
- Docker Deployment - Containerized deployment
- API Routes Summary - All available endpoints
- Swagger Setup - Interactive API docs
- Swagger Testing - Testing with Swagger UI
- Pricing System - How pricing works
- M-Pesa Integration - Payment integration
- Booking Fee System - Escrow & fees
- AI Matching - Matching algorithm
- Support System - Ticket system
- Database Schema - MongoDB collections
- Implementation Summary - Architecture overview
- Contributing Guide - How to contribute
- VPS Deployment Guide - Production VPS deployment
- CI/CD Strategy - Full CI/CD pipeline details
- Docker Deployment Guide - Local Docker setup
- Node.js 18+ and npm
- MongoDB 7.0+
- Redis (optional, for caching)
- M-Pesa Developer Account
cd backend
# Install dependencies
npm install
# Configure environment
cp .env.example .env
nano .env
# Seed pricing data
npm run seed:pricing
# Start development server
npm run devcd frontend
# Install dependencies
npm install
# Configure environment
cp .env.example .env
nano .env
# Start development server
npm run dev# One command to start everything
./scripts/docker-dev.sh
# Or manually
docker-compose up -d
docker-compose logs -f# Backend tests
cd backend
npm test
# Frontend tests
cd frontend
npm testThe app is deployed on a VPS with zero-downtime blue-green deployments via GitHub Actions.
Production URLs:
- Frontend: https://dumuwaks.ementech.co.ke
- API: https://api.ementech.co.ke
- Health Check: https://api.ementech.co.ke/api/v1/health
Infrastructure:
- Ubuntu 24.04 VPS with PM2 + Nginx
- SSL via Let's Encrypt
- GitHub Actions CI/CD pipeline
- Automated rollback on health check failure
Pushing to master triggers automatic deployment.
π Full guide: VPS Deployment Guide | CI/CD Strategy
- Configure environment:
cp .env.docker.example .env.docker
nano .env.docker # Set development values- Start services:
./scripts/docker-dev.sh- Verify:
docker-compose ps
docker-compose logs -fπ Full guide: Docker Deployment Guide
- JWT authentication with secure token storage
- Password hashing with bcrypt
- Environment variable protection
- Rate limiting on sensitive endpoints
- CORS configuration
- Input validation and sanitization
- Secure M-Pesa API integration
- Document encryption for sensitive data
We welcome contributions! Please see CONTRIBUTING.md for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Backend Development: Full-stack API with Node.js/Express
- Frontend Development: React/TypeScript SPA
- DevOps: Docker containerization and deployment
- M-Pesa Daraja API for payment integration
- MongoDB for database
- React and TypeScript communities
- All contributors and testers
- Documentation: See docs/ folder
- Issues: GitHub Issues
- Mobile app (React Native)
- Advanced analytics dashboard
- Multi-language support
- SMS notifications via Africa's Talking
- Automated testing suite (Jest + React Testing Library)
- Performance monitoring (New Relic/Sentry)
- CI/CD pipeline (GitHub Actions)
- Enhanced technician verification (KYC)
- Video consultations (Agora integration)

