Skip to content
Muhammed Ismail KT logo
Muhammed Ismail KT
  • Home
  • About
  • Projects
  • Contact
  • Home
  • About
  • Projects
  • Contact
Muhammed Ismail KT logo
Back to Projects

QuickWork — Local Service Marketplace

Multi-role marketplace connecting clients with service providers through real-time coordination, payments, and assignment workflows.

Technologies
ReactTypeScriptNode.jsExpressMongoDBSocket.IO
Live Link
View Live
GitHub Link
View Repository

Overview

QuickWork is a full-stack service marketplace where clients can discover and hire local service providers for various tasks. The platform manages the complete lifecycle from provider discovery and job posting through assignment, work tracking, payment processing, and completion — with separate interfaces for clients, providers, and platform administrators.

My Role

Sole developer. Designed the data model, built the REST API, implemented real-time communication, integrated Razorpay payments, and deployed to AWS EC2.

Problem Statement

Connecting clients with local service providers dynamically requires real-time coordination, location-based filtering, multi-role access control, and verified payment handling across different user types.

Solution & Architecture

QuickWork implements a three-role system (Client, Provider, Admin) with location-based provider discovery using GeoJSON queries, real-time Socket.IO messaging between parties, and Razorpay payment integration with server-side HMAC signature verification.


+-------------------+      WebSockets      +-----------------------+
| Client/Provider   | <==================> |  Socket.IO Gateway    |
+-------------------+                      +-----------------------+
                                                       |
                                                       v
                                           +-----------------------+
                                           |  Node/Express Server  |
                                           +-----------------------+
                                            |          |          |
                                            v          v          v
                                     +-----------+ +--------+ +-----------+
                                     |  MongoDB  | |Razorpay| |Cloudinary |
                                     | (GeoJSON) | |  API   | |  (Files)  |
                                     +-----------+ +--------+ +-----------+
		

Technical Flow

React (TypeScript) → Axios → Express REST API → Mongoose ODM → MongoDB (GeoJSON indexes) — Socket.IO for real-time messaging — Razorpay SDK for payment order creation and HMAC verification — Cloudinary for file/image uploads — Leaflet + OpenStreetMap for location display.

Core Workflow

  1. Clients post jobs (public or targeted) with service requirements and location
  2. Providers discover jobs via location filtering and apply
  3. Clients review applications and assign a provider
  4. Provider updates work status through defined lifecycle stages
  5. Client confirms completion and initiates payment
  6. Server creates Razorpay order, client completes payment, server verifies signature via HMAC SHA-256
  7. Platform fee is deducted and provider earnings are recorded
  8. Admin manages users, monitors transactions, and handles dispute resolution

User Roles

Client

Posts jobs, browses providers, assigns work, initiates payments, and tracks job status.

Provider

Manages availability, discovers jobs by location, applies to jobs, updates work progress, and receives earnings.

Admin

Manages platform users, reviews transactions, handles cancellations and absence reports, and monitors platform fees.

Key Engineering Areas

Payment Verification

Razorpay order creation on the server, client-side checkout, then server-side HMAC SHA-256 signature verification before confirming payment state in the database.

Assignment Lifecycle

Tracks assignment and work status across job, assignment, in-progress, completion, and payment-related workflows, including cancellation and provider absence handling.

Role-Based Access Control

JWT authentication with role-specific middleware restricting API routes to the appropriate user type (client, provider, admin).

Real-Time Communication

Socket.IO manages bidirectional messaging between clients and providers with connection tracking for online status.

Location-Based Discovery

MongoDB GeoJSON indexes enable providers to discover nearby jobs and clients to filter providers by proximity.

Platform Fee Handling

Tracks platform fees, provider earnings, and transaction records as part of the payment workflow.

Technical Challenges & Resolutions

Key engineering challenges: managing GeoJSON coordinate queries for location-based filtering, distributing real-time Socket.IO events across multiple user roles, coordinating payment state transitions with Razorpay signature verification, and preventing invalid status transitions in the assignment lifecycle.

Architectural Trade-offs

Chose MongoDB for GeoJSON indexing support and flexible document schemas across different user roles.

What I Learned

Building QuickWork taught me how to coordinate multiple user roles within a single application, implement location-based queries with GeoJSON, handle real payment verification flows, and manage the deployment of a Node.js application on AWS with process management and reverse proxying.

Security Guardrails

Uses JWT authentication, role-based access control, and server-side HMAC SHA-256 signature verification for Razorpay payment confirmation.

Deployment & Infra

Deployed on AWS EC2 behind an Nginx reverse proxy, managed via PM2 for process management, with GitHub Actions CI/CD workflows for automated deployment.

  • Home
  • About
  • Projects
  • Contact
© 2026 Muhammed Ismail KT. All Rights Reserved.
Handcrafted in India 🇮🇳