← All work
LF
Marketplace platform · Saudi Arabia & the GCC

ListFleet

● Live

A full classifieds marketplace — vehicles, property, jobs and general goods — built for the Saudi and wider GCC market, with published mobile apps, multi-currency pricing and a complete operator back office.

Category
Marketplace platform
Market
Saudi Arabia & the GCC
Surfaces
iOS · Android · Web · Admin
Status
Live in production

A regional classifieds market that still runs on screenshots.

Classifieds in the Gulf are fragmented across general-purpose apps and chat groups. Listings are screenshots, prices are in whichever currency the seller had in mind, and there is no verification that the person on the other end is reachable at all.

ListFleet is a structured marketplace: typed categories with custom fields, verified contact details, paid promotion packages, in-app chat, and an operator console that runs the whole estate.

Every surface, by us.

Mobile apps
Flutter on iOS and Android, published to both stores.
Public web
Next.js 15 and React 19, server-rendered so listings are indexable — which for a classifieds product is most of the acquisition channel.
API and admin
Laravel 10 on PHP 8.2, serving the apps and the operator panel.
Media
All user media on S3 as the default filesystem, not on the application disk.

Categories, currencies and languages are data — not code.

A classifieds platform lives or dies on how much can be reconfigured without a deployment.

// 01

Everything translatable has a translation table

Categories and their custom fields carry translation rows rather than hard-coded strings, so adding a language or a whole new vertical is an operator task instead of a release. The catalogue ships with 106 categories and 2,195 cities seeded.

// 02

Published, not prototyped

The Flutter apps are live in both the App Store and Play Store. Shipping to the stores is a different discipline from shipping to a server — review, signing, staged rollout and the fact that a bad build cannot simply be rolled back.

// 03

The public web is server-rendered on purpose

Listings are rendered server-side so they are indexable, because for a classifieds product organic search is not a marketing channel alongside the app — it is most of the demand side.

// 04

Media never touches the app server

Object storage is the default filesystem, not an afterthought bolted onto local disk. Every listing image, avatar and category asset lives there, which is what keeps the web tier stateless and replaceable.

// 05

Three codebases, one product

A Laravel API and operator panel, a Next.js public site and a Flutter app all speak to the same domain model. Keeping three clients honest against one API is the standing engineering cost of the product, and the reason the API is the contract rather than a convenience.

What it runs on.

Laravel 10 PHP 8.2 MariaDB Next.js 15 React 19 Flutter 3.8 AWS S3 nginx

We build these for ourselves. We build them for clients too.

Everything on this page was designed, built, deployed and is operated by the same small senior team. If you have a product that needs the same treatment, start with a conversation.