Real estate portal architecture: hundreds of static listings, zero plugins, a 68-hour sprint.
A demonstration project of a real estate agency portal in Wrocław: a listings catalogue with filters, a separate page for every property and an architecture with no CMS panel to maintain.
* The 72 hours are counted from the Client’s approval of the visual direction (a description of the look, references or a mockup), not from first contact — once the quote is accepted, materials are delivered and the advance payment received. We work out the details and a mockup with you beforehand and aim to fit everything into 72h, but the deadline runs from approval. Time spent waiting for the Client pauses the clock. Terms, section 4.3
- Project
- Demonstration project
- Delivery time
- 68 h
- Stack
- Next.js 16 · Tailwind CSS v4 · TypeScript
- Live URL
- domexpert.online
[01] Challenge
What usually breaks a property portal
Typical real estate sites built on WordPress with Elementor pile up plugins. Every filter request means another database query, server response time grows as the site expands, and the mobile score drops the most.
- 01Filtering listings without reloading the page
- 02Good performance on phones, not only on desktop
- 03No CMS attack surface: there is no admin panel to break into
[02] Results
Results table
The same site before the redesign and after the new version went live. Every value can be checked independently in PageSpeed Insights.
| Metric | Before redesign | After · mobile | After · desktop |
|---|---|---|---|
| Performance | 38–41 | 92 | 100 |
| Accessibility | 98 | 100 | 100 |
| Best Practices | 93 | 100 | 100 |
| SEO | 100 | 100 | 100 |
| LCP — largest contentful paint | 10.7–10.9 s | 3.2 s | 0.8 s |
| CLS — layout shift | 0.00–0.01 | 0.002 | 0 |
| TTFB — server response time | 50 ms | 50 ms | 50 ms |
| Page weight | ~2.0 MB | 453 KiB | 599 KiB |
Before: Lighthouse, mobile emulation, previous version (2 runs, min–max range). After: PageSpeed Insights, mobile and desktop, 21.10.2026; CLS, TTFB and page weight measured with Lighthouse on production the same day.
[03] Solutions
How it is built
- 01
Static export
Next.js generates ready-made HTML files for every page and every listing. Nginx serves them from a Docker container, so the server does not assemble a page on each visit.
- 02
Listings in one data file
522 listings live in a TypeScript file generated by a script. There is no database and no admin panel to keep updated and patched.
- 03
Filters without page reloads
District, type, transaction and price narrow the list in the browser. The filter state lives in the page address, so a narrowed result can be shared as a link.
- 04
Structured data for search engines
Sale listings are described with Product and Offer, rental listings with RentAction. Each one includes an address: district and Wrocław.
- 05
Images without layout shifts
Photos load from a remote source (Unsplash) without automatic conversion. Frames have fixed aspect ratios, so the layout does not jump while loading.
- 06
CI/CD with a smoke test
GitHub Actions: type check, Next.js build, rsync to the VPS, nginx reload and a smoke test. If a deploy fails, it rolls back to the previous version.
[04] Sprint log
Sprint stages in hours
The four-stage structure of a 72-hour sprint, the same for every project.
- 01Architecture & UX00–12 h
A short brief, keyword research and a sitemap. Every page gets one job and one keyword before a single pixel exists.
- 02Code & design12–36 h
The design system and components are built in parallel — straight in code, with no mockups to redraw. Copy is written for people and for Google at the same time.
- 03SEO & Core Web Vitals36–60 h
We tune everything Google's crawler sees: structured data, meta tags, sitemap, images and load time. Accessibility is checked against WCAG 2.1.
- 04QA & launch60–72 h
Testing on real devices, domain and analytics with GDPR consent, Search Console submission. You get the site and full access to the code.
* The 72 hours are counted from the Client’s approval of the visual direction (a description of the look, references or a mockup), not from first contact — once the quote is accepted, materials are delivered and the advance payment received. We work out the details and a mockup with you beforehand and aim to fit everything into 72h, but the deadline runs from approval. Time spent waiting for the Client pauses the clock. Terms, section 4.3
[05] Start
Need a platform with similar performance for your business?
We will go through your business, goals and competitors. You get a fixed quote within 24 hours, and the sprint starts on a date you choose.