©2025 · Strona ofertowa · 3D produkt · Lokalne SEO
Schol-Bud
Trzynaście statycznych podstron dla firmy montującej okna i drzwi od 2004 r. Trzy warstwy treści, trzy ścieżki kontaktu i zero CMS-a do utrzymania.
- Klient
- Schol-Bud. Producent okien i drzwi PCV
- Lokalizacja
- Rynarzewo, woj. kujawsko-pomorskie
- Rok
- 2025
- Zakres
- Identyfikacja wizualna · Projekt UX i interfejsu · Wdrożenie front-end · SEO techniczne i lokalne · Wydajność, dostępność, bezpieczeństwo
- Live
- scholbud.pl
Branża
Stolarka otworowa · Okna, drzwi, bramy

- Klient
- Schol-Bud. Producent okien i drzwi PCV
- Lokalizacja
- Rynarzewo, woj. kujawsko-pomorskie
- Rok
- 2025
- Zakres
- Identyfikacja wizualna · Projekt UX i interfejsu · Wdrożenie front-end · SEO techniczne i lokalne · Wydajność, dostępność, bezpieczeństwo
- Live
- scholbud.pl
Problem i podejście
Jak sprzedać okna komuś, kto zbiera pięć ofert i nie umie ich porównać? Dać mu liczby, proces i firmę z twarzą — zanim podniesie telefon.
- Identyfikacja wizualna
- Projekt UX i interfejsu
- Wdrożenie front-end
- SEO techniczne i lokalne
- Wydajność, dostępność, bezpieczeństwo
Problem
Schol-Bud montuje stolarkę otworową od 2004 r. — okna PCV i aluminiowe, drzwi, rolety, bramy garażowe — w Żninie, Rynarzewie, Bydgoszczy i okolicznych powiatach. Firma z dwudziestoletnim stażem i ośmioma stałymi producentami nie miała w internecie miejsca, które by to pokazywało.
Okna to zakup rozłożony na tygodnie. Klient zbiera trzy do pięciu ofert, porównuje współczynnik Uw, klasę antywłamaniową, izolację akustyczną, termin i gwarancję, a decyzję podejmuje dopiero po pomiarze u siebie w domu. Wizytówka z numerem telefonu nie obsługuje żadnego z tych etapów.
W lokalnym wyszukiwaniu — „okna Żnin”, „drzwi zewnętrzne Bydgoszcz” — konkurują sieciowe salony i portale ofertowe z budżetami reklamowymi. Mała firma nie wygra licytacją o kliknięcie. Może wygrać konkretem: parametrami, opisanym procesem i tym, że wygląda na firmę, a nie na szablon.
Podejście
Zamiast jednej strony-wizytówki — trzynaście statycznych podstron ułożonych w trzy warstwy: marka (start, o firmie), produkt (sześć kategorii z pełną specyfikacją) i decyzja (montaż, producenci, kontakt). Klient wchodzi na dowolnym poziomie i zawsze ma następny krok.
Trzy ścieżki kontaktu o różnym progu wejścia: telefon jednym kciukiem na mobile, trzypolowy formularz wyceny na stronie głównej i pełny formularz z opisem zlecenia na /kontakt. Kto jest gotowy dzwonić — dzwoni. Kto porównuje o 22:00 — zostawia numer.
Warstwa wizualna: ciemne editorial hero, serif Fraunces w nagłówkach, jeden niebieski akcent i model 3D okna w tle. W branży, w której wszyscy używają tego samego stocka i tego samego gradientu, wygląd jest najtańszym sposobem na wyróżnienie w wynikach i podglądzie linku.
Wynik wdrożenia
- 100Performance
- 100Accessibility
- 100Best Practices
- 100SEO
Co dostarczyłem.
Kompletny produkt, nie szablon — od identyfikacji wizualnej po nagłówki bezpieczeństwa i zgody RODO. Trzynaście statycznych podstron w trzech warstwach decyzji zakupowej: marka, produkt, decyzja.
Zakres domknięty tak, żeby po oddaniu nie zostało nic „do dorobienia później”: strona działa, mierzy się, indeksuje i przyjmuje zapytania od pierwszego dnia.
- 01Identyfikacja wizualna i design system — paleta, typografia, komponenty
- 0213 statycznych podstron w trzech warstwach: marka → produkt → decyzja
- 03Sześć kart produktowych z pełną specyfikacją (Uw, klasa RC, akustyka, gwarancja)
- 04Trzy ścieżki konwersji — telefon, formularz wyceny, formularz kontaktowy
- 05Katalog ośmiu producentów z filtrem kategorii i linkami do katalogów PDF
- 06SEO techniczne i lokalne — JSON-LD, sitemap, robots, OG
- 07Zgody cookies, GA4 z Consent Mode v2 i polityka prywatności
- 08Audyt produkcyjny: Lighthouse mobile i desktop, kontrasty WCAG, cross-browser

Karta produktu — Uw, klasa RC, akustyka, gwarancja
Jak to zrobiłem.
Cała strona to statyczny HTML generowany w buildzie. Bez bazy danych, bez CMS-a, bez wtyczek — treść siedzi w siedmiu plikach TypeScript, każda zmiana to commit i automatyczny redeploy. Dwadzieścia jeden tras generuje się statycznie; dynamiczne są wyłącznie dwa endpointy formularzy i obrazek Open Graph.
Next.js 15 w App Routerze, React 19, TypeScript w trybie strict, Tailwind bez biblioteki komponentów. Jeden system ruchu na całą stronę: 200 ms na kolory, 300 ms ease-out na podkreślenia i uniesienie kart. Wejście hero animuje GSAP przez gsap.matchMedia, więc przy prefers-reduced-motion animacja nie startuje w ogóle.
Model okna w hero to glTF skompresowany DRACO — 7 kB geometrii renderowane przez React Three Fiber. Pętla renderowania zatrzymuje się, gdy sekcja wyjedzie z ekranu, więc karta nie mieli klatek w tle przez cały czas życia strony.
Siedemdziesiąt testów w dziewięciu suitach (Jest + Testing Library) pokrywa to, co realnie może się zepsuć: walidację formularza wyceny, filtr producentów, blokadę GA4 przed zgodą, nawigację i spójność danych treści. Na koniec audyt produkcyjny z powtórnym pomiarem po każdej poprawce.
Przesuń, aby zobaczyć więcej
Trzy warstwy na mobile — start, oferta, kontakt
Dlaczego tak.
Statyczny Next.js zamiast WordPressa: zero wtyczek do aktualizowania, brak panelu jako wektora ataku, hosting bez serwera i bazy danych, TTFB z CDN-u. Kod należy do klienta i da się go przenieść gdziekolwiek.
Serif Fraunces z osią optical-size zamiast korporacyjnego sansa — wielkie nagłówki są ostrzejsze, małe czytelniejsze. Scena 3D renderuje się dopiero od 1024 px: na telefonie kosztowała ~530 ms TBT, a warunkowy render sprawia, że chunk three.js w ogóle się nie pobiera.
Parametry techniczne na każdej karcie produktu — Uw, klasa antywłamaniowa, akustyka, gwarancja — to dokładnie te liczby, które klient wkleja do arkusza porównawczego. Formularz wyceny ma trzy pola, bo każde dodatkowe to spadek konwersji, a wymiary i tak trzeba zmierzyć na miejscu. Osobna podstrona dla każdej z sześciu kategorii: frazy „okna aluminiowe Żnin” mają słabszą konkurencję niż samo „okna”.
Pod spodem warstwa, której nie widać: honeypot i limit zapytań w formularzach, walidacja po stronie serwera, Content-Security-Policy z jawną listą źródeł, HSTS z preload. GA4 nie pobiera ani jednego skryptu przed zgodą — obok działa bezcookiowa analityka Vercela jako baseline.

Kontakt — mapa, dane firmy i formularz z walidacją serwerową
Design system.
Ciepła biel, grafit i jeden niebieski akcent. Serif Fraunces z osią optical-size w nagłówkach, Inter w tekście — żeby firma od okien wyglądała jak marka z charakterem, a nie jak katalog hurtowni.
SCHOL-BUD
- N° 01O firmie
- N° 02Oferta
- N° 03Montaż
- N° 04Producenci
- N° 05Kontakt
- Tło#f8f7f4
- Tekst#111111
- Akcent#2b6299
- Obrys#d6d6d0
- Display
- OKNA I DRZWI
- H1
- Pełna oferta produktów.
- H2
- Jak wygląda współpraca
- Lead
- Dobieramy, dostarczamy i montujemy.
Tech stack
- Next.js 15
- React 19
- TypeScript
- Tailwind CSS
- GSAP
- Three.js
- React Three Fiber
- Resend
- Jest
- Vercel
Credits
- Projekt i kod
- SoraWeb Studio · Aleksander Pietrzak
- Stack
- Next.js · TypeScript · Tailwind · Three.js · R3F · Vercel
- Hosting
- Vercel

MIK Usługi
Podobny projekt?
Porozmawiajmy o Twojej stronie.
Każda strona zaczyna się od krótkiej rozmowy o celach. Bez briefu, bez zobowiązań. Najpierw sprawdzam, czy się dogadujemy.


