Skip to content
All projects
Client project Delivery & commerce

Jahiz

Trusted tradespeople, transparent offers

A home-services marketplace with Flutter customer and worker apps: customers post jobs, workers send offers, and both sides confirm completion.

Country
Palestine
Type
Client project
Timeline
2026
Platforms
Android · iOS
Jahiz
apps on both stores
2
trades covered
8

Overview

Jahiz ("ready") connects households in Palestine with trusted local tradespeople across eight trades, from electricians and plumbers to AC technicians, painters and cleaners. Instead of fixed prices, it runs a reverse-auction flow.

The customer posts a job with photos and an address. Workers in that city and area send offers with an inspection fee, a repair estimate and an arrival time. The customer picks one, both sides chat in-app while the job runs, and it closes only when both confirm it is done.

Both apps were released on Google Play and the App Store in August 2026.

The challenge

  1. 01

    Trust in an informal market: hiring is word of mouth, prices are opaque and nothing is recorded, so offers, profiles, portfolios and ratings had to be visible

  2. 02

    Two sides with different incentives: no one can mark a job done alone, and cancellations and price changes need the other side's agreement

  3. 03

    A fair model for workers: free jobs first, then commission, with statements showing what was earned, owed and paid

  4. 04

    Real-time chat and instant offer pushes without extra cost

Highlights

Customer app

  • Home with the best-rated workers per trade, a banner carousel and a reels feed
  • Request a service with trade, description, photos and a map address, broadcast to matching workers
  • My services: a timeline per request, an offer comparison sheet and confirm-complete or confirm-cancel steps
  • Shareable worker profiles with portfolio, experience and reviews, plus per-request chat over Socket.IO
  • Arabic-first UI with English and Turkish, light and dark themes, an AI assistant chat and guest browsing

Worker app

  • Phone login, onboarding and a requests inbox filtered by status with search
  • Send an offer with inspection fee, repair price and arrival time, with a banner tracking free jobs left
  • Request details with a map link, cancel-with-reason and price-change requests
  • Statements with earnings, commission and paid or unpaid status per billing period
  • Portfolio, reviews, notifications and chat with customers

Backend contributions

  • Socket.IO chat with token-authenticated handshakes and per-user rooms
  • Server-enforced two-sided completion and cancellation states
  • Targeted FCM pushes, favorites and app-version checks
  • Auth, OTP and rate-limit hardening, guest browsing and dual-role accounts

Signature feature

Request, offers, done, on both sides

  • A request moves through one state machine that both apps show consistently, from pending and receiving offers to in progress, awaiting confirmation and completed.
  • Offers carry an inspection fee, a repair estimate and an ETA. The customer compares them side by side and accepts one, with clear terms.
  • The worker can only move a job to awaiting confirmation. It becomes completed when the customer confirms, and only then does the commission apply. Cancellations and repair-price changes also wait for the customer.
  • Chat is scoped to the request: both apps join a per-user Socket.IO room with the user's token, and messages and status changes arrive live.

Swipe for more

Engineering notes

  1. 01

    A 403 must not log the user out

    The old Dio interceptor cleared the session on both 401 and 403, silently signing out customers who hit worker-only endpoints with a valid token. It now ends the session only on 401, through a single-flight handler that triggers one logout, not many.

  2. 02

    One account, two roles

    The backend was extended so a single phone number can be both a customer and a worker. Both apps handle role-specific errors without breaking the session.

  3. 03

    Two-sided completion and cancellation

    New request states are enforced on the server and shown in both apps' timelines. The other party gets a targeted push and confirms in one tap.

  4. 04

    Fair-usage gating

    The worker app shows remaining free jobs before each offer and the commission owed per statement period, so the business model is never a surprise.

  5. 05

    Built on a delivery platform's foundations

    The worker app started from the Talabatek restaurant app's clean-architecture shell (get_it, dartz, feature folders), cutting setup time before being reshaped around requests, offers, statements and portfolios.

Results

  • 2 Flutter apps live on Google Play and the App Store since August 2026
  • Customer and worker apps each at 10+ installs on Google Play at the time of writing; early-stage launches, reported as-is

Stack

  • Flutter
  • Bloc / Cubit
  • GetIt
  • dartz
  • Dio
  • Socket.IO
  • Google Maps
  • easy_localization
  • FCM
  • Crashlytics
  • Remote Config
  • Node.js
  • Express
  • MySQL