Own product · RahCode · On-Demand Local Services Marketplace: Web, Android & API

Servio

A marketplace for local services. Customers post what they need, verified pros nearby send competing offers, and the customer compares price, rating, time and warranty before booking one. The job is then tracked, paid, settled and reviewed end to end.

My role
Sole developer and designer: API, web app, Android app, design system, deployment
Year
2026
Built with
Laravel 13 (PHP 8.3) · Laravel Reverb · Next.js 16 & React 19 · Expo / React Native
Servio

By the numbers

  • 193 API endpoints
  • 76 Web pages
  • 58 Android app screens
  • 52 Database tables
01

The Challenge

A services marketplace has three audiences with different needs. Customers want a fair price fast. Pros want relevant leads and reliable payouts. The operator needs commission, disputes and cash collected on site to reconcile.

It had to work on the web and on Android, in Persian and English, with Iranian payment and SMS providers, and still install on ordinary shared hosting.

02

The Approach

I built one Laravel API behind three clients: a Next.js web app (public site, customer app, provider workspace and admin panel), an Expo Android app, and the admin itself. Requests, offers and bookings are enum-based state machines. A queued matching job uses haversine distance to send each request only to pros whose service radius covers it. Simple jobs can also be booked instantly at a fixed price.

All money moves through one row-locked wallet ledger: commission, cash collected on site, cancellation fees, refunds, referral bonuses and payouts. Realtime chat and tracking run on Reverb WebSockets, with a polling fallback on shared hosting. Payments and SMS sit behind pluggable interfaces, and the web app is a static export served by Laravel, so no Node.js is needed in production.

03

The Outcome

Version 1.0.0 shipped as a complete marketplace package with a web installer, Iran and US demo data and a full screenshot set. This is also the product where my design language took shape. Its soft cards, gradient headers and amber key actions now carry through my other products, including this site.

What I built

  • Competing offers: compare price, rating, time and warranty, then book

  • Instant fixed-price booking: the first pro to accept gets the job

  • Radius-based lead matching on a queue (haversine distance)

  • Live tracking: on the way, arrived, in progress, done; masked-contact chat

  • Row-locked wallet ledger: commission, cash on site, refunds and payouts

  • Web app, Android app and admin on one Laravel API with Reverb realtime

  • Zarinpal, Zibal and Stripe; Kavenegar, SMS.ir and Twilio; bilingual with Jalali dates

Gallery

Built with

Laravel 13 (PHP 8.3) Laravel Reverb Next.js 16 & React 19 Expo / React Native TypeScript MySQL 8 Docker, Nginx & Supervisor