Programista Astro - szybkie strony z architekturą wysp

5.00/5 - (17 głosów)
6 min czytania
Przewodnik

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ść.

  1. Inwentaryzacja. Spisuję każdy adres URL, przekierowania, typy treści, media i integracje zewnętrzne.
  2. Eksport treści. Wpisy i strony trafiają do plików Markdown lub MDX z frontmatterem zgodnym ze schematem kolekcji.
  3. Mapa przekierowań. Każdy zmieniony adres dostaje przekierowanie 301, ustawione na poziomie hostingu.
  4. Dane strukturalne. Przenoszę i poprawiam schema.org, bo wtyczki SEO w WordPressie często generują ogólne znaczniki.
  5. Pomiar przed i po. Porównuję starą stronę i nową wersję na stagingu tym samym narzędziem i w tych samych warunkach.
  6. 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.

Sprawdź inne usługi WordPress i bazę wiedzy

Wzmocnij swój biznes dzięki profesjonalnemu wsparciu technicznemu w kluczowych obszarach ekosystemu WordPress.

Rekomendacje z LinkedIn

Rekomendacje i opinie o współpracy z WPPoland

Wybrane rekomendacje liderów branży WordPress, WordCamp i e-commerce - z naciskiem na terminowość, głębię techniczną i biznesowe podejście do rozwoju serwisów.

Karolina Czapla

Karolina Czapla

Strateg Marketingowy, Performance & Digital Strategy

“Praca z Mariuszem przy WordCampie pokazała mi, jak rzadko łączy się głębokie umiejętności techniczne z prawdziwym przywództwem. Planuje, koordynuje i dowozi z ogromną dbałością o szczegóły, a jednocześnie daje zespołowi ...”

Współorganizatorka WordCamp Gdynia 2024 i 2025

Anna Kamińska

Anna Kamińska

Talent Acquisition Specialist / HR Business Partner

“Portfolio Mariusza mówi samo za siebie. Widać w nim precyzję, wszechstronność i ogromne poczucie odpowiedzialności. Można mu zaufać przy prowadzeniu projektu od pomysłu do wdrożenia, przy jednoczesnym dbaniu o komunikacj...”

Pracowaliśmy w tym samym zespole

Sarah‑Luisa Kwolek

Sarah‑Luisa Kwolek

IT Project Management & Product Owner, Web/App

“Przez ponad dwa lata mogłam liczyć na Mariusza przy zadaniach WordPress, od stylowania i szablonów po integracje z zewnętrznymi usługami. Wnosi spokój do zespołu i trzyma front‑end projektu w ryzach.”

Mariusz był jej klientem przy pracach WordPress

Argert Boja

Argert Boja

Senior Full‑Stack Developer

“Mariusz jest takim współpracownikiem, jakiego każdy chciałby mieć: mocne kompetencje full‑stack WordPress, jasne tłumaczenie decyzji technicznych i pozytywne nastawienie nawet pod presją. Sprawnie przechodzi między wtycz...”

Pracowaliśmy razem przy projektach WordPress

Varun Patil

Varun Patil

Lider Growth & CRM

“Poza samym developmentem Mariusz świetnie rozumie SEO, analitykę i growth. Rozmawia bezpośrednio z interesariuszami, zadaje właściwe pytania i dowozi rozwiązania, które realnie wpływają na wyniki biznesowe, od AMP, przez...”

Był przełożonym Mariusza przy inicjatywach growth

Rafał Osiński

Rafał Osiński

Founder @ EasyTrips.pl, Senior WordPress Dev

“Znam Mariusza z polskiej społeczności WordPress od wielu lat. Jest niezawodny, bardzo zaangażowany i po prostu zawsze 'jest', na meetupach, WordCampach i w projektach. Jeśli zależy Ci na długofalowej współpracy i kimś, k...”

Współorganizator WordUp Trójmiasto i WordCampów

Daniel Blossfeld

Daniel Blossfeld

Konsultant ds. Optymalizacji Procesów i Digitalizacji

“Miałem przyjemność współpracować z Mariuszem przez prawie trzy lata. W tym czasie jego umiejętności w zakresie rozwoju WordPressa okazały się nieocenione w wielu projektach, od budowy stron internetowych po obszary człon...”

Mariusz był jego klientem przy pracach WordPress

Natalie Wiszczor

Natalie Wiszczor

CRM & E-Mail Marketing Manager

“Miałem przyjemność współpracować z Mariuszem przez ponad 4 lata w dziedzinie technicznej. W tym czasie okazał się kompetentnym i niezawodnym kolegą. Szczególnie wyróżniała się jego przyjazna natura i niezwykła wytrwałość...”

Pracowaliśmy z Mariuszem w różnych zespołach

Mark Chalklen

Mark Chalklen

Head of Design & Build w Itineris Limited

“Mariusz to świetny członek zespołu, zawsze chętny do podjęcia każdego zadania i nauki nowych rzeczy. Świetny komunikator i ogólnie miły facet do współpracy. Trudno go jednak pokonać w naszej cotygodniowej tabeli liderów ...”

Bezpośrednio zarządzał Mariuszem

Jessica Di Pasquale

Jessica Di Pasquale

Prowadzenie inicjatyw SEO z strategiami wzrostu opartymi na danych.

“Mariusz to bardzo utalentowany, cierpliwy i doświadczony człowiek. Zawsze gotowy do pomocy i naprawiania błędów, naprawdę doceniałem pracę z nim. Jest wspaniałym kolegą!”

Bezpośrednio zarządzała Mariuszem

Biki John

Biki John

Entuzjasta Content Marketingu i SEO

“Wspaniale było pracować z Mariuszem. Naprawdę doceniałem jego rozległą wiedzę na temat WordPressa i to, jak przydawała się za każdym razem, gdy potrzebowałem wsparcia w nawigacji po CMS. Całkowicie pochwalam Mariusza za ...”

Pracowaliśmy z Mariuszem w różnych zespołach

Rafal Borowiec

Rafal Borowiec

Software Developer, Konsultant, Manager i Wykładowca

“Miałem okazję współpracować z Mariuszem przez 7 miesięcy. Doskonale radzi sobie z optymalizacją techniczną dla wyszukiwarek (SEO). Mariusz posiada również silne doświadczenie w rozwoju AMP, GTM i GA. Mariusz czuje się ba...”

Bezpośrednio zarządzał Mariuszem

Belinda Koch

Belinda Koch

Analityk Web-Tracking w TUI

“Mariusz to wspaniała osoba do współpracy. Jest niezwykle zmotywowany do nauki nowych rzeczy i dzielenia się swoją wiedzą, a także posiada szeroką wiedzę na wiele tematów. Pracowaliśmy razem nad analityką cyfrową i temata...”

Pracowaliśmy z Mariuszem nad analityką cyfrową i tematami śledzenia

Ali Nezamolmaleki

Ali Nezamolmaleki

Growth, SEO, Myślenie Analityczne, AMP

“Mariusz to niezwykle utalentowana osoba w swojej dziedzinie. Zawsze potrafi spojrzeć na problem z nowej perspektywy i myśleć nieszablonowo w sytuacjach, które wydają się być bez wyjścia. Współpraca z nim to zawsze przyje...”

Pracowaliśmy z Mariuszem w tym samym zespole

Karol Jakubcewicz

Karol Jakubcewicz

Front-end / JavaScript Developer

“Mariusz to niesamowicie doświadczony programista WordPress i specjalista SEO/SEM, z którym miałem przyjemność pracować przez prawie dwa lata. Jako lider zespołu odpowiedzialnego za rozwój strony AirHelp, był jedną z kluc...”

Pracowaliśmy z Mariuszem w tym samym zespole

Paweł Lewczuk

Paweł Lewczuk

Front-end developer, WordPress developer

“Współpracowałem z Mariuszem przy kilku projektach i nasza współpraca zawsze przebiegała wzorowo. Myślę, że jeszcze niejeden wspólny projekt przed nami. Polecam!”

Mariusz był klientem Pawła

Przemek Wroblewski

Przemek Wroblewski

Software Developer z ponad 20-letnim doświadczeniem

“Mariusz to osoba z ogromnym doświadczeniem i głęboką wiedzą o rozwiązaniach frontendowych. Silny, kompetentny i odpowiedzialny programista WordPress. Ma łatwość w budowaniu relacji międzyludzkich. Miał wizję dostrzegania...”

Pracowaliśmy z Mariuszem w różnych zespołach

Często zadawane pytania

Pytania o zakres, wdrożenie, koszty i jakość realizacji.

Programista Astro, co robi WPPoland?#
WPPoland to ja, Mariusz Szatkowski. Buduję strony w Astro z architekturą wysp, przenoszę serwisy z WordPressa i Next.js do Astro i stawiam statyczny build na Cloudflare. Pracuję sam, z Gdyni. WordPress zostaje tam, gdzie redakcja potrzebuje panelu. Wycena jest pisemna, po opisie zakresu.
Czym jest Astro i kiedy wybrać je zamiast WordPressa?#
Astro to framework, który domyślnie renderuje komponenty do HTML i CSS, a JavaScript wysyła tylko dla interaktywnych wysp. Sprawdza się przy stronach firmowych, blogach i dokumentacji, gdzie treść zmienia osoba pracująca w repozytorium albo w headless CMS. Jeśli redakcja codziennie publikuje w panelu, korzysta z wtyczek albo sprzedaje przez WooCommerce, zostaję przy WordPressie.
Czy przeniesiesz moją stronę z WordPressa do Astro?#
Tak. Robię inwentaryzację adresów URL, eksport treści do Markdown lub MDX, mapę przekierowań 301, przeniesienie danych strukturalnych i porównanie pomiarów przed i po na stagingu. Czas zależy od liczby podstron, typów treści i integracji, więc podaję go w ofercie po przejrzeniu strony. Możesz też zostawić WordPressa jako źródło treści przez REST API.
Czy strona w Astro współpracuje z CMS?#
Tak. Treść może leżeć w plikach Markdown i MDX w repozytorium, w headless CMS takim jak Sanity, Storyblok czy Contentful albo w WordPressie, z którego Astro pobiera dane przez REST API. Wybór zależy od tego, kto i jak często edytuje treść.
Czy Astro jest dobre pod SEO?#
Astro wysyła gotowy HTML w pierwszej odpowiedzi serwera, więc wyszukiwarka i crawler bez JavaScriptu widzą całą treść. Tagi hreflang, kanoniczne adresy i dane strukturalne nadal trzeba zaprojektować w szablonach. Mapę witryny generuje integracja @astrojs/sitemap, którą się instaluje.
Ile kosztuje strona w Astro?#
Wyceniam indywidualnie, na podstawie liczby szablonów, integracji i zakresu migracji treści. Wyślij przez formularz kontaktowy opis strony i to, co ma się zmienić, a dostaniesz pisemną ofertę z założeniami.
Czy Astro obsługuje strony wielojęzyczne?#
Tak. Konfiguracja i18n w Astro definiuje listę języków, język domyślny, prefiksy w adresach i język zapasowy, a funkcje takie jak getRelativeLocaleUrl budują poprawne linki. Tagi hreflang w nagłówku strony trzeba dodać w szablonie; alternatywne wersje w mapie witryny może wygenerować @astrojs/sitemap z opcją i18n. wppoland.com działa w ten sposób w sześciu językach.
Jak wygląda hosting strony w Astro na Cloudflare?#
Statyczny build Astro to katalog z plikami HTML, CSS i zasobami, który można wystawić na Cloudflare bez adaptera. Jeśli część stron ma się renderować na żądanie, potrzebny jest adapter @astrojs/cloudflare, który wdraża na Cloudflare Workers, bo Pages nie są już przez niego obsługiwane. Każdy build wiąże się z commitem, więc powrót do poprzedniej wersji jest prosty.
Czym jest architektura wysp w Astro?#
Strona jest statycznym HTML, a interaktywne komponenty to osobne wyspy. Każda ładuje swój JavaScript zgodnie z dyrektywą: client:load od razu, client:idle gdy przeglądarka jest wolna, client:visible gdy komponent wejdzie w widok, client:media po spełnieniu zapytania CSS, client:only bez renderowania na serwerze. Na jednej stronie mogą być wyspy z React, Svelte i Vue.
Czy Astro obsługuje treści dynamiczne, na przykład formularze?#
Tak. Wyspa serwerowa, oznaczona dyrektywą server:defer, renderuje swoją treść osobno, na żądanie, a reszta strony pokazuje się od razu. Wymaga to adaptera do renderowania na serwerze. Formularz na stronie statycznej może też wysyłać dane do osobnego endpointu, na przykład w Cloudflare Workers.

Potrzebujesz FAQ dopasowanego do branży i rynku? Przygotuję wersję pod Twoje cele biznesowe.

Porozmawiajmy

Polecane artykuły