Jeg bygger nettsteder i Astro for bedrifter som vil ha raske sider uten å drifte en PHP-server. Selve wppoland.com er laget slik: Astro 7, Tailwind CSS 4, seks språk og utrulling på Cloudflare Pages. Det jeg skriver om her, bruker jeg i produksjon hver dag.
Hvem jeg er
Jeg heter Mariusz Szatkowski (Wikidata) og har utviklet for WordPress siden 2006. WPPoland er navnet på arbeidet mitt. Jeg jobber alene, så koden du får, har jeg skrevet selv, og tilgangene dine deles ikke med noen.
Hva jeg tilbyr
Nye Astro-nettsteder etter ditt design, migrering fra WordPress og Next.js, Content Collections og MDX, headless WordPress som innholdskilde, ytelsesarbeid og oppsett på Cloudflare. Grafisk design og wireframes leverer du, for eksempel som Figma-fil.
Hvor jeg jobber
Remote fra Gdynia i Polen, i samme tidssone som Oslo. Vi kommuniserer på e-post, i skriftlige dokumenter og i repositoriet. Faktura går B2B med EU-momsnummer PL7393037445.
Hva Astro gjør annerledes
Ifølge dokumentasjonen om øyarkitektur gjengir Astro hver UI-komponent til HTML og CSS og fjerner klient-JavaScript automatisk. En komponent blir interaktiv først når du gir den et direktiv som client:load, client:idle eller client:visible. Navigasjon, tekst og bunntekst forblir ren HTML, mens et søkefelt eller et kart lastes som en egen øy. React, Svelte, Vue, Preact og SolidJS kan blandes på samme side.
Server Islands med server:defer dekker det motsatte tilfellet: en del av siden som må gjengis på serveren, for eksempel en handlekurv eller innloggingsstatus, mens resten er bufret statisk.
For React-applikasjoner med App Router er Next.js-utvikler riktig side. Er oppgaven bredere enn ett rammeverk, se programvareutvikler.
Bokmål, nynorsk og i18n i Astro
Språklova § 4 sier at bokmål og nynorsk er likeverdige språk, og § 14 pålegger statsorgan å gjøre skjema og andre selvbetjeningstjenester tilgjengelige på begge målformer samtidig. For private bedrifter er det et valg, men mange norske kunder vil ha begge.
Astro har innebygd i18n-ruting. I konfigurasjonen setter jeg locales (for eksempel nb, nn og en), defaultLocale og eventuelt fallback, slik at en side som ennå ikke finnes på nynorsk, faller tilbake til bokmål. Med routing.prefixDefaultLocale bestemmer du om bokmål skal ha /nb/ i adressen. hreflang-taggene skriver jeg inn i layouten selv, og hver språkversjon må lenke tilbake til de andre, ellers ignorerer Google taggene.
Content Collections og MDX
Innhold defineres i src/content.config.ts. Loaderne glob() og file() henter lokale filer ved byggetid, og skjemaet skrives med Zod fra astro/zod. Mangler en fil et obligatorisk felt, gir Astro en feilmelding som peker på filen. På wppoland.com ligger flere tusen sider i slike samlinger, og skjemaet er det som holder frontmatter likt på tvers av seks språk.
Trenger du innhold som endres oftere enn du bygger, finnes live collections som henter data ved forespørsel. De krever en adapter for rendering på forespørsel.
MDX lar redaktører sette inn komponenter som tabeller eller diagrammer midt i en artikkel uten å røre malkoden.
Når WordPress fortsatt er riktig valg
Jeg anbefaler ikke Astro til alt. WordPress er bedre når ikke-tekniske redaktører publiserer daglig i et visuelt grensesnitt, når en eksisterende utvidelse løser behovet ditt, eller når nettbutikken trenger WooCommerce. Et mellomvalg er headless WordPress: redaktørene blir i WordPress, og Astro henter innholdet via REST API-et eller WPGraphQL ved byggetid.
Migrering fra WordPress eller Next.js
- Inventar. Jeg lager en liste over hver URL, interne lenker, bilder, strukturerte data og integrasjoner med tredjeparter, og sjekker hvilke sider som faktisk får trafikk i Google Search Console.
- Innhold. Innlegg og sider eksporteres til Markdown eller MDX med typet frontmatter. Bilder går gjennom
<Image />og<Picture />fraastro:assets, som kan lage AVIF og WebP og setter bredde og høyde for å unngå layoutforskyvning. - Adresser. Endres en URL, får den en 301-omdirigering. Jeg tester kartet før lansering.
- Strukturerte data. Schema.org-markering fra utvidelser er ofte generisk. Jeg skriver den på nytt for nettstedet ditt.
- Måling. Jeg måler Core Web Vitals før og etter. Googles grenser for god opplevelse er LCP innen 2,5 sekunder, INP på 200 ms eller mindre og CLS på 0,1 eller mindre, målt ved 75. persentil.
Hvordan dette gikk på mitt eget nettsted, står i rapporten om migreringen fra WordPress til Astro og i casestudien om wppoland.com.
Utrulling på Cloudflare Pages
En statisk Astro-side kan rulles ut på Cloudflare uten adapter. Trengs rendering på forespørsel, brukes @astrojs/cloudflare. Cloudflare anbefaler nå Workers for nye prosjekter, og jeg velger mellom Pages og Workers ut fra hva prosjektet trenger.
På Pages får hver push til en gren som ikke er produksjon en egen forhåndsvisning med adresse på formen <gren>.<prosjekt>.pages.dev. Du ser endringen der og godkjenner skriftlig før den slås sammen.
Synlighet i KI-søk
Mange KI-assistenter kjører ikke JavaScript når de henter en side. Jeg har samlet kildene i artikkelen Rendrer AI JavaScript?. En statisk Astro-side sender hele teksten i det første HTML-svaret, så overskrifter, avsnitt og Schema.org-data er lesbare uten nettleser. I tillegg kan jeg legge inn en llms.txt etter forslaget på llmstxt.org, slik wppoland.com har.
Vedlikehold etter lansering
Avhengigheter som Astro og Tailwind oppdaterer jeg i en egen gren. Endringen testes i forhåndsvisningen før den går til produksjon. Statiske sider har ingen database eller adminpanel å angripe, men DNS, Cloudflare-innstillinger og skript fra tredjeparter trenger fortsatt tilsyn. Jeg gir ingen garanterte responstider; omfanget av vedlikeholdet står i avtalen.
Kontakt
Send meg omfang, ønsket tidsplan og eventuelt adressen til dagens nettsted via kontaktskjemaet. Du får neste steg og et tilbud skriftlig.
Den kortere tjenestesiden for Astro-utvikler oppsummerer samarbeidsmodellen.






