Skip to content

Repository files navigation

πŸ”§ Dumu Waks - Professional Maintenance & Repair Services Platform

Dumu Waks Logo

🌐 Live App

Connecting skilled technicians with customers across Kenya

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.

License: MIT Node Version MongoDB TypeScript React Live Demo


🌟 Live Application

πŸ”— 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

πŸš€ Quick Start

# 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 dev

Access the app:

πŸ“– Detailed setup: See QUICK_START.md

πŸ“‹ Table of Contents

✨ Features

Core Features

  • πŸ” 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

Payment Features

  • πŸ’³ 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

Advanced Features

  • Service completion verification
  • Matching preferences
  • Session-based search
  • Document encryption
  • API rate limiting
  • Comprehensive logging

πŸ› οΈ Tech Stack

Backend

  • 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

Frontend

  • 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

DevOps

  • 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)

πŸ“ Project Structure

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

πŸ“š Documentation

πŸš€ Getting Started

πŸ”Œ API Documentation

πŸ’‘ Features

πŸ› οΈ Development

πŸ› Fixes & Solutions

πŸš€ Deployment

πŸ’» Development

Prerequisites

  • Node.js 18+ and npm
  • MongoDB 7.0+
  • Redis (optional, for caching)
  • M-Pesa Developer Account

Local Development

Backend

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 dev

Frontend

cd frontend

# Install dependencies
npm install

# Configure environment
cp .env.example .env
nano .env

# Start development server
npm run dev

Docker Development

# One command to start everything
./scripts/docker-dev.sh

# Or manually
docker-compose up -d
docker-compose logs -f

Testing

# Backend tests
cd backend
npm test

# Frontend tests
cd frontend
npm test

πŸš€ Deployment

Production (VPS)

The app is deployed on a VPS with zero-downtime blue-green deployments via GitHub Actions.

Production URLs:

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

Local Development (Docker)

  1. Configure environment:
cp .env.docker.example .env.docker
nano .env.docker  # Set development values
  1. Start services:
./scripts/docker-dev.sh
  1. Verify:
docker-compose ps
docker-compose logs -f

πŸ“– Full guide: Docker Deployment Guide

πŸ” Security

  • 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

🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘₯ Team

  • Backend Development: Full-stack API with Node.js/Express
  • Frontend Development: React/TypeScript SPA
  • DevOps: Docker containerization and deployment

πŸ™ Acknowledgments

  • M-Pesa Daraja API for payment integration
  • MongoDB for database
  • React and TypeScript communities
  • All contributors and testers

πŸ“ž Support

  • Documentation: See docs/ folder
  • Issues: GitHub Issues

πŸ—ΊοΈ Roadmap

  • 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)

Built with ❀️ in Kenya

Connecting skilled technicians with customers who need them

Dumu Waks

About

Kenya-focused maintenance and repair marketplace with technician matching, service booking, real-time communication, and M-Pesa payments.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages