Marhire is a Moroccan rental marketplace launched to bring three markets together that no one was covering under one roof: car rental, boat charter, and activity booking. The audience: international travelers landing in Casablanca, Marrakech, or Agadir, and Moroccan residents booking a weekend from their phone. The functional scope spans 6 cities and over 130 partner providers. The starting brief was clear: turn a scattered catalog of offers into a platform where a booking takes under three minutes, from picking the car to confirming payment.
Three very different use cases share the same booking funnel: renting a 4x4 by the week, chartering a boat by the hour, or booking a half-day family activity. Each has its own pricing logic, time slots, and cancellation rules. On the backoffice side, 130+ partners needed to manage their own catalog, availability, and calendar without us in the loop. All of this in nine languages (FR, EN, ES, DE, IT, NL, PL, PT, RU), with local SEO that actually ranks on queries like "4x4 rental Marrakech" or "boat charter Agadir".
Laravel backend for business robustness: Eloquent for booking models, queue jobs for notifications, Cashier for Stripe. React on the visitor side, on an architecture built for multilingual SEO from line one: translated URLs, hreflang tags, schema.org AutoRental. Stripe Checkout for payments, in hosted mode to keep PCI compliance off the platform. MySQL as the database, with a FULLTEXT index on geographic searches and a Redis caching layer for the highest-traffic pages. The partner panel runs on Filament, which let us ship a complete admin without rebuilding a dashboard from scratch.
The platform is live with 130+ active partners and an SEO footprint growing month by month on long-tail queries ("car rental Marrakech airport", "sunset boat Essaouira"). Median booking time is under 3 minutes, payment completion rate is above travel e-commerce benchmarks, and vehicle detail pages clear Core Web Vitals on mobile. On the operations side, partners manage their own catalogs with no support tickets, which was the KPI we set at scoping.
One decision worth flagging: we refused to use a no-code marketplace builder and built a custom Laravel stack instead. Off-the-shelf builders would have shipped an MVP in 4 weeks, but none covered the three verticals (auto, marine, experiences) with the same funnel logic. Six months later, that call paid off: every new feature ships in days, on our own roadmap, with no external dependency.