Przejdź do treści
Design Development Maintenance Performance Security

Strona inwestycji mieszkaniowej

Strona sprzedażowa osiedla na 142 mieszkania, zbudowana wokół tego, czego ustawa o jawności cen wymaga od dewelopera: każde mieszkanie na planie budynku, każda cena z historią, publiczny cennik do pobrania. Klient i inwestycja są fikcyjne — strona i jej kod są prawdziwe.

Strona główna Lenno — Łęgi Warty: zdjęcie osiedla i karta dostępności mieszkań
W skrócie
Klient
Lenno Development — klient fikcyjny, projekt demonstracyjny webmotion
Branża
Deweloper mieszkaniowy
Czas trwania
Wrzesień–październik 2026
Zakres
Design, Development, Maintenance, Performance, Security
Zespół
Jedna osoba — projekt w Figmie i wdrożenie w WordPressie
Dostępna pod
lenno.webmotion.io
Założenia

Co ten projekt musiał rozwiązać

Problem, jaki był, i decyzja, która go rozwiązała.

Wyzwanie

Cennik, któremu kupujący może zaufać, a nie folder z PDF-em w załączniku

Od ustawy z 21 maja 2025 r. o jawności cen mieszkań deweloper musi publikować cenę każdego lokalu, jej historię i koszty dodatkowe, i to w formie nadającej się do maszynowego odczytu. Większość stron deweloperskich dokleja cennik w PDF-ie do folderu reklamowego. Tutaj cennik musiał być stroną.

  • 142 mieszkania ze statusem i ceną w każdym widoku
  • Pełna historia cen każdego lokalu i publiczny cennik
  • Polski i angielski bez prowadzenia dwóch cenników
Podejście

Jeden cennik, z którego czyta każdy widok

Mieszkania to jeden typ treści z ceną, historią zmian i statusem. Wyszukiwarka, karty lokali, PDF-y, schowek i publiczny cennik czytają te same rekordy, a jeden import CSV od działu sprzedaży aktualizuje je wszystkie.

  • Mieszkania nie są tłumaczone — jeden rekord obsługuje oba języki
  • Zmiana ceny sama dopisuje się do historii
  • Aktualna liczba wolnych lokali w edytowalnych tekstach
Technologia

Stack, na którym to zbudowaliśmy

Ten sam benchmark, od którego zaczyna się każdy projekt webmotion, plus kilka elementów, których wymagał cennik dewelopera.

Fundament 04
  • WordPress CMS i edytor blokowy
  • ACF Pro 24 autorskie bloki i pola lokali
  • Polylang PL / EN w stronach, wpisach i opcjach
  • PHP 8.2+ Typowane serwisy cen i lokali
Warstwa motywu 04
  • Sage 11 Szkielet motywu od Roots
  • Acorn 6 Kontener Laravela w WordPressie
  • Blade Widoki, composery, serwisy
  • Alpine.js Wyszukiwarka i schowek na jednym JSON-ie lokali
Front end 04
  • Tailwind CSS v4 Tokeny prosto z planszy stylu w Figmie
  • Geist Hostowany lokalnie, z polskimi znakami
  • Lenis Płynne przewijanie i przejścia do kotwic
  • PhotoSwipe 5 Lightbox galerii
Build i utrzymanie 04
  • Vite 6 Build assetów i HMR
  • ddev / Docker Identyczne środowiska lokalne
  • GitLab CI + Deployer Najpierw testy, potem wdrożenie
  • LiteSpeed + LSCache Serwer produkcyjny i cache stron
Także w repozytorium dompdf Contact Form 7 Yoast SEO Pest PHPStan Laravel Pint WP-CLI
Integracje

Z czym to połączyliśmy

Każda karta mówi, co to za system, co robi na tej stronie i w którą stronę płyną dane.

  • CSV / XML

    Publiczny cennik

    Cały cennik pod /ceny.csv i /ceny.xml, z historią cen i kosztami dodatkowymi, plus codzienny zrzut o 6:00 gotowy do publikacji w dane.gov.pl.

    Strona → kupujący, dane.gov.pl
  • Import

    Import cen

    Dział sprzedaży wgrywa arkusz w panelu albo przez WP-CLI; ceny i statusy zmieniają się wszędzie, a historia uzupełnia się sama.

    Arkusz → strona
  • PDF

    dompdf

    Każde mieszkanie ma kartę PDF generowaną na żądanie, z rzutem, parametrami i ceną, w obu językach.

    Lokal → PDF
  • Formularze

    Contact Form 7

    Trzy formularze w szablonach Blade: zapytanie o lokal, umówienie spotkania z kalendarzem i wysłanie schowka do doradcy.

    Odwiedzający → doradca
  • i18n

    Polylang + ACF Options

    Strony, budynki, dziennik budowy i zespół są przetłumaczone; mieszkania zostają jednym rekordem, a angielskie adresy dodaje reguła rewrite.

    PL ⇄ EN
  • Mapy

    OpenStreetMap

    Mapy lokalizacji wyrenderowane z danych OSM i przekolorowane do palety marki, z zachowanym podpisem OpenStreetMap.

    OSM → mapa statyczna
Design system

Kolory i typografia, z którymi wychodzi

Paleta klienta zapisana jako tokeny — każda próbka poniżej to zmienna eksportowana przez motyw.

  • Granat #102C57 Tekst, akcenty, ciemne sekcje, dostępne
  • Krem #FEFAF6 Tło strony
  • Beż #EADBC8 Panele, karty, tła sekcji
  • Piaskowy #DAC0A3 Obramowania i linie
  • Brąz #8A6A45 Status: rezerwacja
  • Szarobrązowy #6F675E Status: sprzedane
Krój pisma
Geist Neogroteska · 3 odmiany Hostowany lokalnie, z polskimi znakami
  • Regular 400
  • Medium 500
  • SemiBold 600
Skala typograficzna
Display
88 / 0.98 / −0.04em
Nagłówek sekcji
44 / 1.08 / −0.03em
689 900 zł
28 / 1.2 / 600
Tekst główny w rozmiarze 17 na 1.6
17 / 1.6 / 400
Etykieta sekcji
13 / 0.08em / wersaliki
  • 6px Przyciski, pola
  • 12px Karty, panele
  • 999px Etykiety statusu, chipy
Trzy promienie wystarczają na wszystko: 6px dla kontrolek, 12px dla paneli i pełna pigułka dla etykiet statusu.
Ekrany

Sam produkt

Zrzuty z działającej strony. Każdy kafelek otwiera się w pełnym rozmiarze.

Strona główna Lenno — Łęgi Warty: zdjęcie osiedla i karta dostępności mieszkań
Strona główna — karta dostępności czyta liczby prosto z cennika, więc tekst nigdy się nie zdezaktualizuje.
Wyszukiwarka mieszkań Lenno z planem trzech budynków i rzutem piętra
Wyszukiwarka — plan trzech budynków; po wyborze piętra obok otwiera się jego rzut.
Karta mieszkania A.2.07: rzut 2D, parametry i cena brutto
Karta mieszkania — rzut, parametry i cena brutto; niżej historia cen i karta PDF.
Schowek Lenno porównujący trzy zapisane mieszkania
Schowek — do trzech zapisanych mieszkań obok siebie, bez konta, z wysyłką listy do doradcy jednym kliknięciem.
Najważniejsze

Co faktycznie zbudowaliśmy

Sześć elementów, na których stoi strona — tych, z których dział sprzedaży dewelopera korzysta na co dzień.

  1. 01

    Plan budynku zamiast formularza filtrów

    Każde mieszkanie to kwadrat w kolorze swojego statusu. Filtrowanie działa w przeglądarce na jednym JSON-ie ze 142 lokalami, więc jest natychmiastowe i działa także zza cache'u stron.

  2. 02

    Historia cen wbudowana w model

    Zmiana ceny dopisuje poprzednią do historii. Każda karta mieszkania pokazuje ją jako wykres i tabelę, z kosztami dodatkowymi pod spodem.

  3. 03

    Publiczny cennik

    /ceny.csv i /ceny.xml udostępniają cały cennik, a codzienny zrzut trafia do katalogu uploads, gotowy do publikacji w dane.gov.pl.

  4. 04

    Jeden import aktualizuje stronę

    Plik CSV od działu sprzedaży zmienia ceny i statusy naraz w wyszukiwarce, na kartach mieszkań, w PDF-ach i w cenniku.

  5. 05

    Schowek bez zakładania konta

    Schowek żyje w przeglądarce, porównuje do trzech mieszkań i wysyła listę do doradcy przez formularz.

  6. 06

    Aktualne liczby w edytowalnych tekstach

    Redaktor wpisuje {available} albo {sold} w nagłówku, a liczba przychodzi z cennika — żadna strona nie obiecuje mieszkań, których już nie ma.

Efekty

Co to zmieniło

Zmierzone na działającej stronie, nie oszacowane — pod każdą liczbą jest źródło pomiaru.

30 ms Czas odpowiedzi serwera Lighthouse 12.8, mobile, strona główna, 2.10.2026
100 Wynik dostępności Ten sam pomiar, strona główna
0 Cumulative Layout Shift Ten sam pomiar, strona główna
Zrealizowany zakres

Co dział sprzedaży dewelopera może prowadzić bez otwierania kodu.

  • Dziesięć widoków w Figmie, na desktop i mobile
  • 24 bloki ACF i pięć własnych typów treści
  • Wyszukiwarka z planem budynków, karty mieszkań i schowek
  • Historia cen, cennik CSV/XML i import CSV
  • Karty mieszkań w PDF i dokumenty dla kupujących
  • Polski i angielski, łącznie z formularzami i opcjami
Następny projekt
Strona firmowa
Strona firmowa Design · Development · Maintenance · Performance · Security
Zacznijmy

Masz projekt, który ma działać tak samo?

Prześlij brief albo umów rozmowę. Odpowiadamy zakresem i widełkami, nie szablonem.

Ustawienia cookies

Zgodę możesz zmienić w każdej chwili — link „Ustawienia cookies” jest w stopce.
Niezbędne Wersja językowa, Twoje ustawienia cookies i ochrona przed atakami (Cloudflare). Zawsze włączone.
Zawsze
Google Analytics — liczba odwiedzin, najczęściej czytane strony, skąd przychodzą odwiedzający. Pliki _ga i _ga_XRELMTQDKT, 2 lata.
Szczegóły: Polityka cookies · Polityka prywatności