RealizacjeCase study
MediaVision to firma dostarczająca technologie i marketing dla branży farmaceutycznej. Zbudowałem dla niej dwujęzyczną stronę marketingową: statycznie eksportowany front-end w Next.js, zasilany treściami z headless WordPressa, z pipeline’em wdrożeniowym, który automatycznie przebudowuje stronę po każdej zmianie treści. Całość zrealizowałem w procesie inżynierskim wspieranym przez AI.
- Klient
- Technologie i marketing dla branży farmaceutycznej
- Rola
- Architektura, front-end, DevOps
- Rok
- 2026
- Stack
- Next.js 16 · TypeScript · Tailwind 4 · GSAP · Headless WordPress · ACF · Polylang · Yoast · Contact Form 7 · GitHub Actions


Tokeny, z których zbudowałem nagłówek tej strony: kolory odczytane z arkuszy stylów strony klienta, krój pisma i przycisk.
Logo
Krój pisma
Poppins
Nagłówki · 500
Paleta
- Tło#0A0A0A
- Tekst#FFFFFF
- Akcent#24D46D
- Pomocniczy*#A3A3A3
* Szary pomocniczy dobrałem sam, pod kontrast co najmniej 4,5:1.
Przycisk
Firma potrzebowała dwujęzycznej (polsko-angielskiej) strony marketingowej z podstronami produktów i usług oraz portfolio realizacji. Treści miały być edytowane samodzielnie przez klienta, bez udziału programisty, a strona miała działać szybko i być dobrze indeksowana przez wyszukiwarki.

Stronę oparłem na architekturze headless. WordPress pełni rolę panelu administracyjnego: grupy pól ACF są zdefiniowane w kodzie jako lokalny JSON, Polylang łączy polskie i angielskie wersje treści, Yoast dostarcza metadane SEO i dane strukturalne (schema), a zgłoszenia z Contact Form 7 trafiają przez REST API.
Front-end działa na Next.js 16 z App Routerem i jest budowany z opcją output: 'export', która generuje statyczny HTML. Każda podstrona ma w kodzie pełne domyślne treści po polsku i po angielsku, dzięki czemu renderuje się poprawnie nawet bez danych z CMS-a. Jedynym źródłem prawdy dla zlokalizowanych ścieżek jest plik routes.ts.
Kod znajduje się w monorepo na GitHubie. Gałąź staging trafia na środowisko stagingowe, a gałąź main na mediavision.pl. GitHub Actions buduje statyczny eksport i przesyła go przez rsync po SSH na hosting współdzielony, z pominięciem pliku .htaccess.
Niewielka wtyczka do WordPressa przy każdym zapisie treści przez redaktora wysyła zdarzenie repository_dispatch, które automatycznie uruchamia przebudowę stagingu i produkcji. Ustawienia robots i indeksowania zależą od zmiennej środowiskowej, dzięki czemu jedna instancja WordPressa bezpiecznie zasila zarówno staging wyłączony z indeksowania (noindex), jak i indeksowaną produkcję.
Wideo w sekcji hero przekodowałem z 22 MB do 4 MB w wersji desktopowej i z 28 MB do 3 MB w wersji mobilnej. Grafiki zostały przeniesione do formatu WebP z jawnie ustawionymi atrybutami loading, decoding i fetchpriority, a klatka startowa wideo (poster) jest wczytywana z wyprzedzeniem.
Mapa witryny (sitemap) jest generowana po zbudowaniu strony. Tagi hreflang i canonical oraz dane JSON-LD pochodzą z Yoast, a sekcje z canvasem i wideo zawierają tekst czytelny dla robotów wyszukiwarek. Adres główny przekierowuje na /pl/ (301), a wersja z www na domenę bez www.
Cały projekt zrealizowałem w procesie inżynierskim wspieranym przez AI, z użyciem Claude Code. Złożyły się na niego: burza mózgów, spisana specyfikacja projektowa, plan wdrożenia, równolegle pracujące subagenty, które budowały poszczególne podstrony na podstawie ramek z Figmy, audyt każdej podstrony piksel po pikselu względem eksportów z Figmy w prawdziwej przeglądarce oraz cykl przeglądów.
W ten sam sposób powstały i zostały zweryfikowane dwujęzyczne modele treści oraz skrypty tłumaczeniowe. AI nie służyło tu do podpowiadania kodu, lecz było częścią uporządkowanego procesu: specyfikacja, plan, przegląd.
Redaktorzy publikują treści samodzielnie, bez udziału programisty, a każda publikacja uruchamia nowy statyczny build. Strona działa w dwóch środowiskach, stagingowym i produkcyjnym, a sam front-end jest w pełni statyczny, więc obsłuży go dowolny hosting.
W pomiarze Lighthouse z 27 października 2026 strona główna uzyskała 98 punktów za wydajność na telefonie i 99 na komputerze, a na obu po 100 punktów za dostępność, dobre praktyki i SEO.
Telefon
- Wydajność
- 98
- Dostępność
- 100
- Dobre praktyki
- 100
- SEO
- 100
Komputer
- Wydajność
- 99
- Dostępność
- 100
- Dobre praktyki
- 100
- SEO
- 100
Strona, sklep albo pomoc w uporządkowaniu procesu. Napisz e-mail albo wiadomość na LinkedIn, odpiszę.