Kim jestem: Mariusz Szatkowski (Wikidata), programista od 2006 roku. WPPoland to nazwa mojej działalności. Pracuję sam, bez zespołu i bez podwykonawców.
Co robię: strony w Astro z architekturą wysp, kolekcje treści ze schematem, MDX, podłączenie headless CMS, migracje z Next.js i z WordPressa, statyczne wdrożenia na Cloudflare.
Gdzie: zdalnie z Gdyni. Ustalenia prowadzę mailowo, w dokumentach i w repozytorium.
Ile kosztuje: wyceniam każdy projekt osobno, po pisemnym opisie zakresu. Oferta zawiera zakres, założenia i harmonogram.
Programista Astro: dla kogo i po co
Astro biorę wtedy, gdy strona jest przede wszystkim treścią: strona firmowa, blog, dokumentacja, katalog usług. Framework domyślnie renderuje komponenty do HTML i CSS, a JavaScript dostaje tylko ten fragment, który naprawdę reaguje na użytkownika. Formularz, wyszukiwarka czy przełącznik cennika stają się wyspami. Nawigacja, nagłówki i treść zostają zwykłym HTML.
Ta strona też stoi na Astro: Astro 7, MDX, Tailwind CSS 4, statyczny build na Cloudflare Pages i sześć wersji językowych. Jak powstawała i na jakich zasadach działa, opisuję w case study przebudowy wppoland.com. Przebieg przejścia z WordPressa krok po kroku jest w raporcie z migracji do Astro.
Projekt graficzny i makiety są po twojej stronie, na przykład jako plik Figma albo arkusz, w którym zaznaczasz, co ma się znaleźć w każdym widoku. Ja zamieniam to na komponenty Astro, które działają na telefonie i na desktopie.
Front w React z App Routerem opisuję na stronie Next.js developer. Projekty spoza frontu, takie jak integracje i narzędzia wewnętrzne, są pod software developer.
Co robię w projektach Astro
Nowa strona od zera
Zaczynam od pisemnej specyfikacji: typy treści, szablony stron, adresy URL, języki i sposób wdrożenia. Potem buduję komponenty Astro według twojego projektu, kolekcje treści ze schematem i potok wdrożeniowy. Kod trafia do repozytorium, które należy do ciebie.
Kolekcje treści i MDX
Kolekcję definiuję w src/content.config.ts funkcją defineCollection(), z loaderem glob() lub file() z astro/loaders i schematem zbudowanym na z z astro/zod. Wpis z brakującym tytułem albo złą datą zatrzymuje build z komunikatem wskazującym plik. MDX dochodzi przez integrację @astrojs/mdx i pozwala wstawić komponent, na przykład tabelę porównawczą, w środek tekstu.
Wyspy i dyrektywy client
Każda wyspa ma dyrektywę, która decyduje, kiedy ładuje się jej skrypt: client:load, client:idle, client:visible, client:media albo client:only. Przy audycie istniejącej strony Astro zwykle sprawdzam, czy coś nie ma client:load bez powodu, bo to najczęstsze źródło zbędnego JavaScriptu.
Headless CMS
Gdy treść edytują osoby spoza repozytorium, podłączam headless CMS: Sanity, Storyblok, Contentful albo WordPressa. Z WordPressa Astro pobiera dane przez wbudowane REST API (/wp-json/wp/v2/), WPGraphQL jest opcją. Redakcja pracuje w znanym panelu, a odwiedzający dostaje statyczny HTML.
Wydajność istniejącej strony
Sprawdzam obrazy (format, wymiary, srcset), sposób ładowania fontów, skrypty zewnętrzne i dyrektywy wysp. Wnioski opieram na danych z prawdziwych wizyt w CrUX tam, gdzie są dostępne, a nie na jednym przebiegu Lighthouse.
Migracja z WordPressa lub Next.js do Astro
Migracja ma przenieść to, co strona już ma w wyszukiwarce: adresy, linki przychodzące, dane strukturalne i zaindeksowaną treść.
- Inwentaryzacja. Spisuję każdy adres URL, przekierowania, typy treści, media i integracje zewnętrzne.
- Eksport treści. Wpisy i strony trafiają do plików Markdown lub MDX z frontmatterem zgodnym ze schematem kolekcji.
- Mapa przekierowań. Każdy zmieniony adres dostaje przekierowanie 301, ustawione na poziomie hostingu.
- Dane strukturalne. Przenoszę i poprawiam schema.org, bo wtyczki SEO w WordPressie często generują ogólne znaczniki.
- Pomiar przed i po. Porównuję starą stronę i nową wersję na stagingu tym samym narzędziem i w tych samych warunkach.
- Uruchomienie. Po twojej akceptacji przełączam domenę i obserwuję błędy w Google Search Console.
Ile to potrwa, zależy od liczby podstron, typów treści i integracji. Termin podaję w ofercie, po przejrzeniu strony.
Polski tekst w statycznym HTML
Polska treść ma dwie pułapki, które w WordPressie często załatwia wtyczka, a w Astro trzeba je zaplanować.
Sierotki. Jednoliterowe spójniki i przyimki (w, z, i, o, a, u) nie powinny zostawać na końcu wiersza. W Astro twardą spację po takich słowach może wstawiać wtyczka w potoku Markdown, wtedy redakcja nie musi o tym pamiętać.
Liczba mnoga. Polski ma trzy formy: 1 wpis, 2 wpisy, 5 wpisów. Teksty interfejsu, takie jak liczniki wyników czy komentarzy, opieram na Intl.PluralRules z kategoriami one, few i many, a nie na prostym warunku “jeden albo więcej”.
Kiedy zostaję przy WordPressie
Astro nie pasuje do każdego projektu. WordPress zostaje, gdy redakcja codziennie publikuje w panelu bez dostępu do repozytorium, gdy sklep stoi na WooCommerce z płatnościami BLIK i Przelewy24 oraz wysyłką InPost, albo gdy potrzebne funkcje daje gotowa wtyczka. Wtedy zajmuję się WordPressem jako WordPress developer. Rozwiązaniem pośrednim jest WordPress jako źródło treści i front w Astro, z koszykiem i kasą nadal w WooCommerce.
Wdrożenie na Cloudflare
Statyczny build Astro to katalog dist z plikami HTML, CSS i zasobami. Taka strona nie potrzebuje adaptera i działa na Cloudflare bez serwera PHP ani bazy danych. wppoland.com tak właśnie działa, na Cloudflare Pages.
Jeśli część stron ma się renderować na żądanie, na przykład wyspy serwerowe z server:defer, potrzebny jest adapter @astrojs/cloudflare. Według dokumentacji Astro adapter nie obsługuje już Cloudflare Pages i wdraża na Cloudflare Workers, które Cloudflare zaleca dla nowych projektów.
Każde wdrożenie wynika z commita w repozytorium, więc wiadomo, co zmieniło się na produkcji, i da się wrócić do poprzedniej wersji.
Wyszukiwarki AI i czysty HTML
Crawlery, które nie wykonują JavaScriptu, widzą stronę Astro w całości, bo HTML przychodzi gotowy w pierwszej odpowiedzi. Dokładam do tego dane strukturalne schema.org (Organization, WebSite, Service, Article), spójne nazwy encji i plik llms.txt z indeksem najważniejszych stron. Tego, czy dany asystent AI zacytuje stronę, nie obiecuję, bo decyduje o tym jego dostawca.
Utrzymanie po wdrożeniu
Astro wydaje nowe wersje regularnie. Aktualizuję framework i zależności npm najpierw na stagingu, a na produkcję wypuszczam dopiero po sprawdzeniu buildu. Przy statycznej stronie nie ma panelu logowania ani bazy danych do aktualizowania, ale DNS, nagłówki bezpieczeństwa i skrypty zewnętrzne nadal wymagają przeglądu. Całodobowego dyżuru ani gwarantowanego czasu reakcji nie oferuję.
Kontakt i powiązane usługi
Opisz stronę, co ma się zmienić i jaki masz termin, przez formularz kontaktowy. Dostaniesz pisemną ofertę z założeniami.
Krótsze podsumowanie tej usługi jest na stronie programista Astro w usługach. Backend w PHP do projektu w Astro opisuję pod programista PHP.






