Mobile App Delivered ✓

Sana3y

On-demand marketplace connecting customers with verified local craftsmen

Project Overview

Sana3y (Arabic for "my craftsman") is a full-stack on-demand services marketplace that connects customers with local handymen — plumbers, electricians, carpenters, painters, AC technicians, and more. The platform comprises three integrated products: a customer-facing Flutter app for browsing service categories and booking appointments, a worker-facing Flutter app for verified craftsmen to receive and manage jobs, and a Next.js admin dashboard for moderating providers, monitoring transactions, and resolving disputes — all powered by a Node.js backend with real-time job dispatch.

The Problem

Trust Gap in Local Services

Finding reliable handymen traditionally meant relying on word of mouth, walking around looking for shops, or risking unknown phone numbers from Facebook groups. Customers had no way to verify skills, see prices upfront, or compare workers. Skilled craftsmen, in turn, struggled to reach customers beyond their immediate neighborhood and lost gigs to middlemen who took unfair cuts.

The Solution

Verified, Rated, On-Demand

Sana3y verifies every worker on the platform — ID check, skills test, and an in-person interview. Customers see real profiles with portfolios, transparent hourly rates, and verified reviews from past jobs. Workers get a steady stream of bookings, fair pricing, and built-in cashless payments — keeping all earnings instead of paying a fixer's cut.

Key Features

01
Service Category Browser
Customers browse 20+ service categories (plumbing, electrical, carpentry, AC repair, painting, etc.) with sub-services, average prices, and estimated job durations.
02
Smart Worker Matching
When a customer books, the backend matches the request to the nearest verified workers ranked by rating, specialty, and availability — pushing the job to the top candidates first.
03
Verified Worker Profiles
Every craftsman goes through ID verification, skills assessment, and a phone interview. Profiles include portfolio photos, years of experience, verified specialties, and aggregated ratings.
04
Real-Time Job Dispatch
WebSocket-based job offers: workers receive a 30-second offer window with full job details and one-tap accept. Unaccepted offers automatically cascade to the next-best worker.
05
In-App Chat & Voice Calls
Customer and worker can chat or call directly inside the app — no exchanging personal numbers. Phone numbers stay private through anonymous voice routing.
06
Transparent Pricing & Quotes
For predictable jobs (e.g., faucet replacement), prices are fixed and shown upfront. For custom jobs, workers send written quotes after a site visit — no surprise bills.
07
Cashless Payments & Earnings
Integrated wallet system with cash-on-completion or in-app card payments. Workers get instant earnings, daily payouts, and clear transaction history with downloadable receipts.
08
Rating & Dispute Resolution
Two-way rating after every job. Admin dashboard surfaces dispute cases, low-rated workers, and customer complaints — moderators can refund, mediate, or remove violators.

Tech Stack

Node.js
Backend API & Dispatch Engine
Single REST + WebSocket backend serving both Flutter apps and the admin panel. Handles job routing, worker ranking, and cascading offer logic in real time.
Flutter (2 apps)
Mobile — iOS & Android
Separate customer and worker apps built from clean-architecture Dart codebases with Bloc state management, shared design system, and offline-aware job queue.
Next.js
Admin Dashboard
Server-rendered admin panel for moderators to verify worker applications, monitor live jobs, handle disputes, and view platform analytics.
MongoDB
Primary Database
Stores workers, customers, job records, service catalogs, ratings, and chat history. Geo-indexed queries for nearest-worker lookups.
WebSocket
Real-Time Layer
Bidirectional channel for live job offers, chat, job-status updates, and dispatch cascades — keeping customer, worker, and admin in sync.
Firebase Cloud Messaging
Push Notifications
Reliable cross-platform push delivery for job offers, customer updates, and admin alerts — even when the app is backgrounded or closed.

Architecture

The Node.js backend exposes a single REST API consumed by all three clients, plus a WebSocket gateway for real-time events. When a customer books a service, the dispatch engine queries MongoDB for the nearest verified workers in the right specialty, scores them by rating and availability, and pushes the offer to the top candidate. If the offer expires without acceptance, the system cascades automatically to the next-best worker.

Worker verification is admin-gated: applications enter a moderation queue surfaced in the Next.js dashboard. MongoDB's geospatial indexes power nearest-worker lookups; Firebase Cloud Messaging dispatches push notifications across platforms. Anonymous voice routing protects worker and customer phone numbers throughout the engagement.

[Customer Flutter App] [Worker Flutter App] \ / \ REST + WebSocket / [Node.js API Backend] | ┌───────┼───────┐ │ │ │ [MongoDB] [Dispatch] [FCM Push] │ [Next.js Admin Dashboard] │ Real-time event flow ├── Customer: status, chat, ETA ├── Worker: new offer, job updates └── Admin: dispute, verification, metrics

Building a Service Marketplace?

I build multi-sided marketplace platforms with verified profiles, real-time matching, and integrated payments. If you're planning something similar, let's talk.