Case study · 03 / 04
Sakan Holiday
B2C short-term rental marketplace built and scaled over 3.5 years. Multi-country, multi-currency, multi-payment-gateway.
- Role
- Lead full-stack engineer
- Timeline
- Aug 2020 – Mar 2024
- Status
- Live
The problem
Property owners across the GCC — chalets, apartments, resorts, farmhouses, caravans — were managing short- and long-term rentals via WhatsApp, spreadsheets, and direct phone calls. There was no single place where seekers could browse the inventory, see availability, pay locally, and book.
A platform had to handle the regional realities: multiple currencies (KWD, SAR, AED, BHD), local payment rails (K-Net, Tap Payments, MyFatoorah), bilingual content, sales-agent commissions, and a CMS the owners themselves could operate.
My approach
A Laravel + MySQL monolith with strict separation between owner-facing dashboards, seeker-facing browse and booking flows, and an internal admin/back-office. CMS designed so non-engineers (regional sales agents and content ops) can run it day-to-day.
Multi-region access in the CMS, multi-facility availability calendar, content-quality scoring, affiliate program — all built into the same platform rather than bolted on. Payments routed through K-Net / Tap / MyFatoorah depending on country and currency, with idempotent webhook handlers.
Delivered
What I shipped.
- 01
B2C marketplace with multi-country + multi-currency
Browse, search, availability calendar, booking, payment, confirmation — fully bilingual, with currency and payment gateway selected by the user’s country.
- 02
Owner & seeker dashboards
Property owners manage inventory, pricing, availability, and bookings; seekers track upcoming and past stays.
- 03
Multi-region CMS
Regional sales agents have scoped CMS access — they can manage their territory’s inventory and content without touching everyone else’s data.
- 04
Sales-agent module + affiliate program
Tracked commissions, agent attribution on bookings, payout reports.
- 05
API outputs to travel agents
JSON / XML feeds so partner agencies could resell inventory programmatically.
- 06
Companion mobile app
Native-feel mobile experience for browsing and booking on the go.
Decisions
Worth calling out.
01Payments as a routing problem, not a single integration
No single payment gateway covers the GCC end-to-end. Every booking carries a country and currency context that picks the right rail (K-Net for Kuwait, MyFatoorah / Tap for cross-region) — with idempotent webhook handlers so a retried callback never double-credits.
02CMS designed for the actual operators
Sales agents speak Arabic and English; the CMS supports both with full RTL and locale-aware field labels. Regional access scoping prevents accidental cross-territory edits.
Outcome
Live at holiday.sakan.co. Used by chalet owners, apartment landlords, resort operators, and travel agents across the region. Continued to operate after I transitioned out of the engineering role into product.
Stack
- PHP
- Laravel
- MySQL
- jQuery
- Bootstrap
- K-Net
- Tap Payments
- MyFatoorah
- Google Maps API
Working on something similar?
Free 15-minute discovery call. We’ll work out whether I’m the right person for it, and if not, I’ll point you somewhere better.
Next case study
AI Automation & n8n
Production AI workflows: code review pipelines, content generation, custom MCP tooling — used in real operations, not as demos.
Read the case study