Skip to content
Craft Solution Tech
All work
Mobile appIn progressMarketplace · UAE

Soukly

Soukly

The starting situation

Buying and selling second-hand among expatriates happens in messaging groups, where a listing disappears under the chatter within an hour and you never know who you're talking to.

What was delivered

A mobile marketplace where a listing stays available, can be found by category and by city, and where you contact the seller directly, by message or phone, with no intermediary taking a cut.

What it changes

The project as the people using it every day see it.

  1. 01

    You search where you live

    Listings filter by category, subcategory and city. A sofa three neighbourhoods away is a different proposition from the same sofa across the country.

  2. 02

    Contact is direct

    Message or call, buyer to seller, with no commission and no middleman. The price shown is the price paid.

  3. 03

    You know who you're talking to

    Every seller has a profile: their active listings and how long they've been a member. It isn't a rating system, but it is checkable.

The screens, one by one

Each screen stays put while you read what it demonstrates. In an app the screen is the product, so it takes the whole space.

The listing, in full

01 / 03

The listing, in full

Photos, price, city, date, condition and description. Everything you'd extract from a messaging group in four exchanges fits on one screen here.

Under the hood

Images are served at the size the screen needs by the service hosting them, not resized after the fact in the app.

The seller, and how to reach them

02 / 03

The seller, and how to reach them

Message or call, your choice, with the seller's profile right beside it: active listings, how long they've been around. You decide knowing who's on the other end.

Under the hood

No in-app messaging to maintain: contact goes through the apps people already use.

Finding, not just browsing

03 / 03

Finding, not just browsing

Category, subcategory, active filters shown and removable one by one. You narrow down without ever losing track of where you are.

Under the hood

Every category list comes from the same declaration: the filter and the posting form cannot drift apart.

On a phone

The screens as they appear on a phone.

The decisions, and why

Each decision carries its reason, then what would break without it.

  1. 01

    Domain separated from transport

    On the server as in the app, business rules live in their own layer, independent of Express and of the database. Entities and value objects are defined once and shared.

    Without it: A marketplace changes its rules often: categories, required fields, publishing conditions. Tangled with transport code, each change becomes a risky operation.

  2. 02

    Photos don't pass through our servers

    Listing images are handed to a specialised service that resizes them and serves the format suited to the screen.

    Without it: A listing is five phone photos, some fifteen megabytes. Storing and serving them yourself means paying for bandwidth to do a worse job.

  3. 03

    Authentication by signed tokens

    Server-signed tokens and passwords hashed with a deliberately slow algorithm. No sessions held in memory, so nothing to replicate if the service restarts.

    Without it: A password stored with anything other than a slow algorithm is crackable in bulk the day there's a leak.

  4. 04

    Abuse is slowed before it lands

    Per-address request limiting and HTTP security headers set at the application level.

    Without it: Without limits, an open marketplace gets its listings scraped and its sign-up form flooded as soon as it becomes visible.

  5. 05

    One source for the categories

    Categories and subcategories are declared in one place and derived everywhere else: filters, the posting form, the search screens.

    Without it: Lists copied from screen to screen eventually diverge, and a listing becomes unfindable through the very filter meant to find it.

Our role
Product, architecture, development, release
Type
Mobile app
Technologies
  • React Native
  • Expo SDK 57
  • GluestackUI + NativeWind
  • TanStack Query
  • Node.js / Express
  • PostgreSQL
  • Cloudinary
  • Clean Architecture / DDD

Tell us what you are trying to build.

Message us on WhatsApp

Other work

Bahia Renov Pro
Business software2026

Bahia Renov Pro

Business software · Spain

Sites were run on a shared spreadsheet and the phone. Three people typed the same information, and every subsidy file had to reach the scheme operator with the right papers in the right order, or be rejected.

Read the case study

Terres de Villas
Website2026

Terres de Villas

Luxury real estate · France

A young agency in a market where credibility is decided before the first appointment. Facing names established for twenty years, it had to look settled from day one, and exist in English without doubling the typing.

Read the case study

SAVY
Mobile app2026

SAVY

Personal finance · Studio product

Keeping a budget together happens in a shared spreadsheet, or not at all. Someone fronts an expense, nobody knows where the month stands, and the conversation always comes back to the same place: who paid for what.

Read the case study