Skip to content
Case Study

M2M

A property marketplace for a whole country — flats, land, offices and garages, with photos, video and a map. Eleven separate programs behind one website.

The M2M property marketplace: the listings page with filters, and three phone screens
20Kinds of property 121Search filters 11Programs working together 3Languages
What We Built

Anyone can list, but nothing goes public on its own.

Twenty kinds of property

From a room to a warehouse, a garage or a plot of land. Each kind has its own fields, its own rules and its own filters.

Five kinds of account

A private owner, an agent, an agency, a developer and a shop each see a different site.

Every advert is reviewed

Staff read every new advert and every new registration, then approve or reject it with a written reason that reaches the person who posted it.

Three languages, and a second marketplace

The whole site in Romanian, Russian and English. A marketplace for building materials was added later, alongside the property one.

How It Works

Reading and writing, kept apart on purpose.

  1. 1

    The searching side

    One program does nothing but answer questions: find me these properties, show me this seller. On a listings site, browsing happens a thousand times more often than posting.

  2. 2

    The posting side

    A second program does nothing but change things: post this advert, edit it, remove it. Split in two, the searching side can be tuned purely for speed without the posting side getting in the way.

  3. 3

    Everything around them

    Sign-in, photos and video, moderation, payments, notifications — each its own small program, all trusting the same single sign-in pass.

Splitting reading from writing is the decision the whole platform rests on. It is also the one that costs the most to get wrong, because from then on the two sides have to agree about everything without ever talking directly.

Built With

Ordinary tools, eleven times over.

In the browser

What a visitor sees. Pages are drawn on the server first, so a listing opens fast and search engines can read it.

  • TypeScript
  • React 17
  • Next.js 12
  • Material UI

On the servers

Nine small programs, nearly all in the same language, so whoever learns one can work on any of them.

  • Go 1.17
  • Gin
  • FastAPI

Where the data lives

One database for the listings, a fast cache in front of it, and cloud storage for the photos and video.

  • MongoDB
  • Redis
  • Cloud storage

How it was shipped

Every program in its own box, all of them on one managed cluster, and the cluster itself written down as code rather than clicked together.

  • Docker
  • Kubernetes
  • Terraform
  • GitLab CI
The Hard Parts

Three problems that could not be bought ready-made.

The form builds itself

A flat to rent and a warehouse to sell need completely different questions. Instead of twenty hand-written forms, the site asks the server what to ask and draws the form from the answer. A new kind of property can be added without touching the site at all.

121 filters, one question

Price, floor, rooms, renovation, furniture, parking, pets, city, district, street. Each has to become part of a single question the database can answer quickly.

Prices compared across currencies

Every night the platform downloads the national bank’s official rates and converts the shopper’s price range before comparing it. Without it, a large part of the catalogue is invisible to any given search.

The Build

Around 1,800 hours of work, over thirteen months.

Built through 2021 and 2022 by a team of nine. The platform is no longer online, so there is nowhere to send you.

13 monthsFrom first commit to last
Get In Touch

Have a project idea? Write down a quote!

Got a project? Drop us a line if you want to work together on something exciting. Or do you need our help? Feel free to contact us.