Domior: A Config-Driven Question Flow for Property Site by Marcel StredakDomior: A Config-Driven Question Flow for Property Site by Marcel Stredak

Domior: A Config-Driven Question Flow for Property Site

Marcel Stredak

Marcel Stredak

Verified

The Mission

Building the questionnaire the whole product runs on.
Most property sites hand you a search box and a few thousand listings. Domior works the other way round. It asks a long set of questions first and narrows the market down from the answers, so the questionnaire is the foundation everything else sits on.
It runs to dozens of questions, and the client expected to keep changing it as they learned what worked: reordering them, rewording them, adding new ones. Written into the frontend, every one of those changes would have needed a release from me.
I came in as lead frontend architect.

The Solution: One System Behind Every Screen

Rather than building the screens, I built the thing that renders them. The backend sends a
configuration document and the frontend turns it into an experience.
Screens come from config. Screen patterns and input widgets resolve through lookup tables. A new kind of question is a config change on the backend plus, if the pattern is new, one line in a registry.
The backend owns navigation. The frontend moves to the screen the backend names and never works out the next one itself, so questions can be reordered server-side without putting the client out of step.
Adding a language is a content change. The frontend keeps no locale list of its own. Routing, the language switcher, page metadata and the sitemap all read the registry that ships with the translations.
Underneath, the config layer and the state model are pure: no React, no I/O, no side effects, with all request sequencing in one place. That keeps the parts most likely to break testable as plain functions instead of through a rendered UI.

Technical Architecture

I built on the client's mandated stack and enforced a strict internal structure on top of it.
Framework: Next.js 16.2 (App Router) with React 19.2, fully typed in TypeScript 5
Styling: Tailwind CSS v4 over a token layer extracted from Figma
Data layer: TanStack Query v5 with typed services per endpoint and retries limited to transient failures
Forms: React Hook Form with Zod schemas derived per screen from the backend config
Internationalization: next-intl across three locales with parity checks in CI
Security: the session token is held in memory and never written to storage
Quality: Vitest across pure and DOM projects, a combined lint, typecheck, test and build gate, plus Husky hooks

Working With the Founder

The founder owned the product, the API and the database, and the designs came from a designer in Figma. I owned the frontend. The relationship was flat: decisions happened in conversation, and either side could talk the other out of something.
That left room to contribute outside my own scope. I gave input on branding and UX, raised flows that were going to confuse people before they got built, and brought the outside perspective of someone who has built and advised on products for twenty years. None of it was my call to make, and it didn't need to be.

What the Client Said

Marcel is just an amazing professional. We had an amazing time working together, and what most surprised me was how committed he was to delivering the highest quality possible. He is also very easy to work with, and I highly recommend him.
Bruno César, Domior
Property Page
Property Page
Profile Settings
Profile Settings
Homepage
Homepage
Like this project

What the client had to say

Marcel is just an amazing professional. We had an amazing time working together, and what most surprised me was how committed he was to delivering the highest quality possible. He is also very easy to work with, and I highly recommend him.

Bruno César, Domior

Jul 27, 2026, Client

Posted Jul 27, 2026

I built the frontend for a property platform: a question flow the client can reshape without a dev. Alongside the build, I was a sparring partner on brand & UX.

Likes

1

Views

2

Timeline

Jun 1, 2026 - Jul 27, 2026

Clients

Domior