Ekspertyza · Strony internetowe
Ta strona internetowa to nasza specyfikacja techniczna — włącznie z pomiarami, które nie są dla nas korzystne.
Budujemy strony renderowane po stronie serwera, z obrazami w AVIF i WebP, nagłówkami bezpieczeństwa zweryfikowanymi z zewnątrz, mapą witryny generowaną z danych i testem akceptacyjnym uruchamianym po każdej publikacji. Wszystko można sprawdzić na stronie, którą czytasz.
Już zbudowaneNie możemy cytować strony klienta bez jego zgody, ale nie jest nam to potrzebne: dowód to właśnie ta strona. Działa na Next.js 16.2.4 z React 19.1.0, jest serwowana prerenderowana z cache (`x-nextjs-prerender: 1`, `x-nextjs-cache: HIT`), ma HSTS z `preload`, `nosniff`, `SAMEORIGIN`, `Referrer-Policy` i pełną politykę treści — zweryfikowane przez `curl -I` w dniu 06.09.2026. Mapa witryny zawiera 147 adresów, wszystkie wygenerowane z danych, a nie napisane ręcznie. Drugie wdrożenie, w tym samym repozytorium: infrastruktura formularza — dziennik append-only, publiczna sondę stanu zdrowia, limitowanie szybkości — oraz skrypt akceptacyjny uruchomiony po publikacji.
Strona prezentacyjna ma jeden uczciwy test: czy można z zewnątrz zweryfikować to, co firma o niej mówi? Dlatego ta strona nie wymienia technologii, lecz rzeczy, które można samodzielnie sprawdzić jednym poleceniem. Strona działa na Next.js 16.2.4 i React 19.1.0, a strony są prerenderowane podczas budowania i serwowane z cache — widać to w nagłówkach odpowiedzi: `x-nextjs-prerender: 1`, `x-nextjs-cache: HIT`, `s-maxage=31536000`, z oknem 300 sekund, w którym stara strona może być jeszcze serwowana podczas odświeżania.
Renderowanie po stronie serwera nie jest preferencją architektury. Odwiedzająca lub odwiedzający z słabym połączeniem i wyszukiwarka otrzymują ten sam pełny HTML, bez czekania na JavaScript. Do tego dochodzi dyscyplina zasobów: obrazy wychodzą w AVIF i WebP, z rocznym cache; czcionki są hostowane przez nas, a nie pobierane z zewnętrznej usługi; osiem bibliotek interfejsu ma zoptymalizowane importy, żeby nie wciągać całych modułów dla jednej ikony.
Nagłówki bezpieczeństwa są wysyłane z dwóch miejsc i sprawdzane w rzeczywistej odpowiedzi, nie tylko w konfiguracji: wymuszony bezpieczny transport przez dwa lata z subdomenami i wpisem na listę preload, zakaz zgadywania typu pliku, ograniczenie osadzania w obcych ramach, polityka odsyłacza oraz polityka uprawnień, która zamyka kamerę i zostawia mikrofon tylko dla własnego źródła — bo demonstracje głosowe tego potrzebują i bez tego wyjątku przeglądarka odmawia po cichu.
Ostatnia część jest tym, co nas wyróżnia, i jest nieprzyjemna: publikujemy też to, co zmierzyliśmy u siebie źle. Serwer nadal nie oferuje Brotli ani HTTP/2. Katalog tłumaczeń jest przesyłany przy każdym przejściu i kosztuje za każdym razem około 70 KB po kompresji. Pakiet 443 KB zawiera cztery katalogi językowe, z których tylko jeden jest routowalny. Czcionki dostarczają też podzbiór cyrylicy, mimo że sprawdzone strony nie zawierają żadnego znaku cyrylickiego. Te liczby są zmierzone, zapisane w repozytorium i na liście poprawek. Dostawca, który nie ma takich liczb o własnej stronie, albo nie mierzył, albo nie chce powiedzieć.