Jeg har nettopp publisert en bak kulissene-artikkel om hvordan jeg bygger CMS Conf 2026-nettsiden, og det er mye mer enn “bare en landingsside”.
I artikkelen går jeg gjennom:
- hvorfor vi valgte Astro 5 + Tailwind CSS 4 for ytelse og vedlikehold,
- hvordan jeg bruker et Git-nativt headless CMS (Pages CMS) i stedet for en tradisjonell backend,
- hva jeg gjørde rundt SEO, Schema.org og hendelse-spesifikk strukturerte data,
- og hvordan vi forbereder nettstedet for AI-først-fremtiden av søk med ting som llms.txt, llms.json og automatiserte oppdateringer under byggeprosessen.
Det er en praktisk historie om design, frontend-arkitektur, content-workflows og optimalisering for både søkemotorer og LLM-er, bygget av et lite, fokusert team.
Hvis du er interessert i moderne konferanse-nettsteder, statiske arkitekturer, eller AI-klar SEO, kan du finne det nyttig.
#Astro #TailwindCSS #SEO #LLMO #AISEO #HeadlessCMS #StaticSites #CMSConf
Slik bygger du en konferansenettside med Astro 5 og Tailwind 4
Mariusz Szatkowski Developer {WordPress | WooCommerce | AI | GEO | AEO | LLMO}
- desember 2025
Da vi startet planleggingen av den digitale tilstedeværelsen for CMS Conf 2026, visste vi at standard “WordPress-tema + plugins”-ruten ikke kom til å cutte det. Vi ville ha noe annet. Vi trengte en side som ikke bare var en brosjyre, men en høytytende content-plattform, rask, vedlikeholdbar og eksplisitt designet for AI-alderen.
Her er historien om hvordan vår nettside-team, Agnieszka Palmowska, Maciek Palmowski og jeg, bygget fundamentet for CMS Conf 2026 ved å bruke en moderne stack som er sweet spot for webutvikling nå.
Rask nettside med Astro 5 og Tailwind CSS 4
Vi valgte Astro 5 av en enkel grunn: ytelse er en funksjon.
Som standard sender Astro null JavaScript til klienten. Dette betyr at sidene våre lastes umiddelbart, noe som er kritisk for mobilbrukere som sjekker programmet eller foredragsholdere på ustødig konferanse-wifi. Vi kombinerte dette med Tailwind CSS 4 (ved å bruke den nye Vite-pluginen), som har vært en åpenbaring.
Vi målte implementeringen i mange verktøy, ett av dem var Google PageSpeed Insights og her er resultatene:
Resultat 100 oppnådd
Men la meg forklare hva dette faktisk betyr i praksis. Når vi snakker om “null JavaScript,” snakker vi ikke bare om mindre pakkestørrelser. Vi snakker om en fundamental endring i hvordan vi tilnærmer oss webutvikling. Tradisjonelle SPA-er (Single Page Applications) sender ofte hundrevis av kilobytes JavaScript bare for å rendere det som kunne vært enkel statisk innhold. Astro snur denne modellen på hodet.
Slik fungerer det: Astro rendrer hele nettstedet ditt til statisk HTML ved build-tid. Det “hydrerer” kun interaktive komponenter når nødvendig, og selv da gjør det det intelligent. Hvis du har en komponent som må være interaktiv (som en navigasjonsmeny eller et skjema), kan Astro isolere bare den komponenten og laste JavaScript for den uavhengig, og la resten av siden være lettvektig HTML.
Denne tilnærmingen gir oss det beste fra begge verdener: ytelsen til statiske nettsteder med interaktiviteten til moderne webapplikasjoner når vi trenger det.
Teknisk tips: Hvis du går over til Tailwind 4, bruk @tailwindcss/vite-pluginen. Den kompilerer CSS-en din på millisekunder, noe som gjør utvikleropplevelsen utrolig rask. Vi implementerte også LightningCSS (Rust-basert) for minifisering og bygde en tilpasset Vite-plugin for å forhåndsinhente kritisk CSS, og eliminerte det forstyrrende “glimtet av ustilt innhold” (flash of unstyled content, FOUC).
La meg dykke dypere i vårt Tailwind CSS 4-oppsett. Den nye versjonen er en motor skrevet om fra bunnen av. Skanningen av filene etter klassenavn ved build-tid består, men Tailwind 4 finner kildefilene selv, så content-arrayet fra versjon 3 er borte, og oppsettet flyttes fra JavaScript til CSS via @theme-direktivet. Dette betyr:
- Raskere gjenoppbygging: inkrementelle bygg som ikke trenger å kompilere ny CSS, hopper over det dyreste steget, så en endret klasse vises umiddelbart
- Mindre pakker: kun klasser som faktisk står i kildefilene, havner i resultatet
Vi implementerte også et tilpasset design-token-system med Tailwinds CSS-variabel-funksjon. Dette lar oss opprettholde konsistens på tvers av nettstedet mens vi fortsatt har fleksibiliteten til å overstyre verdier når nødvendig. For CMS Conf definerte vi vår fargepalett, typografi-skala og avstandssystem som CSS-variabler, og deretter refererte til dem i vår Tailwind-konfigurasjon.
Våre ytelsesoptimaliseringer stoppet ikke der. Vi implementerte:
- Kritisk CSS-inlining for innhold over folden
- Lazy loading for bilder og iframes
- Ressurs-hints (preconnect, prefetch, preload) for eksterne ressurser
- Service worker for offline-funksjonalitet
- CDN-optimalisering med automatisk bildeoptimalisering
Hvilken Astro-versjon CMS Conf-nettsiden kjører i 2026
Denne artikkelen beskriver bygget slik det var i desember 2025, på Astro 5. Astro 5.0 kom ut 3. desember 2024 (utgivelsesnotater for Astro 5.0). Hovednyhetene var Content Layer, server islands, forenklet prerendering (den gamle utdatamodusen hybrid ble slått sammen med static), typesikre miljøvariabler via astro:env og Vite 6. For et innholdsnettsted betyr Content Layer mest: Astro-teamet oppgir at samlinger bygges opptil 5 ganger raskere for Markdown-sider på innholdstunge nettsteder og opptil 2 ganger raskere for MDX, med 25 til 50% lavere minnebruk.
Siden da har det kommet to nye hovedversjoner. Astro 6.0, utgitt 10. mars 2026, krever Node 22 eller nyere, går over til Vite 7 og Zod 4, og legger til et innebygd Fonts API, et Content Security Policy API og live innholdssamlinger (utgivelsesnotater for Astro 6.0). Astro 7.0 fulgte 22. juni 2026 med .astro-kompilatoren skrevet om i Rust, en Rust-pipeline for Markdown og MDX, og Vite 8; Astro-teamet målte 15 til 61% raskere bygg i egne tester (utgivelsesnotater for Astro 7.0). Publiseringsdatoene i npm-registeret stemmer med disse innleggene. 15. oktober 2026 viste generator-metataggen på cmsconf.com Astro v7.1.1, så nettsiden i produksjon har allerede gått forbi versjonen i tittelen på denne artikkelen. For et eksisterende prosjekt viser begge utgivelsesnotatene til samme kommando: npx @astrojs/upgrade.
Slik installerer du Tailwind CSS 4 i et Astro-prosjekt
Tailwind CSS 4.0 ble kunngjort 22. januar 2025 (kunngjøringen av Tailwind CSS v4.0). Ifølge kunngjøringen er fulle bygg opptil 5 ganger raskere og inkrementelle bygg over 100 ganger raskere, målt i mikrosekunder. Blant hovedendringene nevnes automatisk oppdaging av kildefiler, en offisiell Vite-plugin og CSS-first-konfigurasjon. Den gjeldende 4.x-linjen på npm er 4.3.
Den offisielle veiledningen (Install Tailwind CSS with Astro) har fire steg når Astro-prosjektet finnes:
- Installer pakkene med
npm install tailwindcss @tailwindcss/vite. - Legg
tailwindcss()fra@tailwindcss/viteinn ivite.pluginsiastro.config.mjs. - Opprett
src/styles/global.cssmed@import "tailwindcss";. - Importer filen i et layout eller en side og begynn å bruke verktøyklassene.
Dette oppsettet har ingen tailwind.config.js. Temaverdiene legges i en @theme-blokk i samme CSS-fil. Sjekk nettleserne til publikummet ditt før du velger versjon 4: kompatibilitetssiden sier at kjernen i rammeverket er avhengig av Chrome 111, Safari 16.4 og Firefox 128, og oppgraderingsveiledningen anbefaler å bli på v3.4 hvis du må støtte eldre nettlesere.
Pages CMS som Git-basert headless CMS
En vanlig flaskehals i statiske nettsted-prosjekter er content-håndtering. Utviklere elsker Markdown; markedsførings-team… ikke så mye.
Maciek løste dette ved å integrere Pages CMS (https://pagescms.org). Det er et briljant headless CMS som fungerer direkte med ditt GitHub-repository. Det gir vårt content-team et vennlig UI for å administrere blogginnlegg og forfatterprofiler, men under panseret er det bare å committe endringer til repoet vårt.
Hvorfor dette fungerer:
- Zero Infrastructure: Ingen database å vedlikeholde, ingen servere å patche.
- Git-Nativ: Hver content-endring utløser vår CI/CD-pipeline, og sikrer at ingenting går i stykker.
- Kostnad: Det er gratis og åpen kildekode med MIT-lisens.
Men la meg forklare hvordan vi faktisk implementerte dette i praksis. Den tradisjonelle CMS-tilnærmingen involverer ofte en separat database, autentiseringssystem og API-lag. Dette legger til kompleksitet, kostnad og potensielle sikkerhetshull. Pages CMS tar en helt annen tilnærming.
Her er vårt oppsett: Vi opprettet et dedikert content-katalog i vårt repository med klare mappestrukturer for forskjellige content-typer:
content/
├── blog/
│ ├── post-1.md
│ └── post-2.md
├── speakers/
│ ├── speaker-1.md
│ └── speaker-2.md
└── schedule/
├── day-1.md
└── day-2.mdHver Markdown-fil inkluderer en frontmatter-seksjon med strukturerte metadata:
---
title: "Bygging av Moderne Konferansenettsteder"
author: "Mariusz Szatkowski"
date: "2025-12-18"
tags: ["astro", "tailwind", "cms"]
status: "published"
featured: true
---Pages CMS leser disse filene og presenterer dem i et brukervennlig grensesnitt. Vårt content-team kan:
- Create nytt content gjennom en web-basert editor med live preview
- Edit eksisterende content med en rich text editor som outputs ren Markdown
- Administrere media ved å laste opp bilder som lagres i vårt repository
- Review endringer gjennom et innebygd workflow-system med draft/published-stater
Pages CMS lagrer hver endring som en commit på grenen som er åpen i editoren, så innholdshistorikken ligger i Git ved siden av koden. Når redaktørene jobber på en annen gren enn main, når endringene produksjon gjennom en pull request. Dette betyr:
- Alle endringer går gjennom vår vanlige code review-prosess
- Vi kan kjøre automatiserte tester på content-endringer
- Jeg har et komplett revisjonsspore av hver modifikasjon
- Vi kan rulle tilbake endringer om nødvendig
- Vi kan deploye content-oppdateringer uavhengig av kodeendringer
Vi implementerte også tilpassede valideringsregler for å sikre content-kvalitet. For eksempel krever vi at alle blogginnlegg har:
- Minimums ordantall på 500
- Minst ett fremhevet bilde
- Riktige SEO-metadata
- Ingen ødelagte interne lenker
Disse valideringene kjører automatisk når content lagres, og gir umiddelbar feedback til vårt content-team.
Integrasjonen med vår build-prosess er sømløs. Når content-endringer merges til main, kjører vår CI/CD-pipeline automatisk:
- Bygger nettstedet med nytt content
- Kjører tilgjengelighets- og ytelsestester
- Deployer til produksjon
- Invaliderer CDN-cache
- Sender varslinger til relevante teammedlemmer
Denne Git-baserte tilnærmingen har transformert hvordan vi håndterer content. Vårt markedsførings-team kan nå gjøre oppdateringer uten utvikler-intervensjon, mens vi beholder full kontroll over den tekniske implementasjonen.
Slik konfigureres Pages CMS i et repository
All konfigurasjon av Pages CMS ligger i én fil, .pages.yml, i roten av repositoryet (Pages CMS-konfigurasjon). Pages CMS leser den per repository og per gren, så en funksjonsgren kan ha en endret innholdsmodell uten å røre produksjon. Nøklene på øverste nivå er media (hvor opplastinger lagres og hvilke URL-er som skrives inn i innholdet), content (de redigerbare samlingene og enkeltfilene), components (delte feltdefinisjoner), settings og actions.
To innstillinger er verdt å kjenne før teamet begynner å redigere. settings.content.merge er false som standard, som betyr at filen skrives på nytt bare ut fra det konfigurerte skjemaet, og alt utenfor det editoren sender inn forsvinner. Med true slår Pages CMS sammen de innsendte feltene med den eksisterende filen og beholder nøkler skjemaet ikke definerer (Pages CMS-innstillinger). Hvis byggeskript legger til egne frontmatter-nøkler, vil standardinnstillingen fjerne dem ved neste redigering. settings.commit.templates bestemmer commit-meldingene, med standardverdier som “Update {path} (via Pages CMS)”, slik at innholds-commits er lette å filtrere i git log. Nøkkelen actions legger til knapper som starter GitHub Actions-arbeidsflyter fra .github/workflows/, for eksempel en utrulling eller et forhåndsvisningsbygg. Pages CMS støtter bare GitHub, og det er gratis og MIT-lisensiert, enten du bruker den hostede versjonen, ruller det ut på Vercel eller drifter det selv (pagescms.org).
Schema.org for arrangement og organisasjon
Ranking i 2026 krever mer enn bare nøkkelord. Du trenger struktur.
Vi gikk dypt i Schema.org-implementering. Vi bygget en tilpasset SchemaOrg.astro-komponent som dynamisk genererer JSON-LD strukturerte data for hver side.
Hva vi implementerte:
- Organisasjonsschema: Identifisering av Openweb S.C. som juridisk enhet.
- Hendelsesschema: Gi Google med presise datoer, lokasjon (PPNT Gdynia) og billettinformasjon.
- @id Linking: Avgjørende bruker vi @id-referanser for å “koble prikkene” mellom organisasjonen og hendelsen i Googles Knowledge Graph.
Pro Tips: Ikke stol på standard SEO-plugins for å gjøre alt. Tilpasse din Schema for å koble enhetene dine (f.eks. koble din Hendelse til din Organisasjon via IDer) er et kraftig signal til søkemotorer om hvem du er og hva du gjør.
Hvilke Event-egenskaper Google krever for utvidede søkeresultater for arrangementer
Googles dokumentasjon om arrangementer (strukturerte data for Event) lister tre påkrevde egenskaper: name, startDate i ISO 8601-format med klokkeslett, og location som Place med name og en fullstendig PostalAddress. Bare bynavnet som adresse er merket som ikke anbefalt. De anbefalte egenskapene er description, endDate, eventStatus, image (Google anbefaler 1920 px bredde, minst 720 px), offers, organizer og performer. I offers er price den laveste tilgjengelige billettprisen inkludert gebyrer, og 0 markerer et gratis arrangement.
For en konferanse er koblingen direkte. I organizer refereres organisasjonens @id fra avsnittene over i stedet for å gjentas, offers.url peker til billettsiden, og performer kan liste foredragsholderne som Person-oppføringer. Hvis arrangementet flyttes, dokumenterer Google previousStartDate for den gamle datoen; den må brukes sammen med eventStatus satt til EventRescheduled, og startDate inneholder da bare den nye datoen.
Hva er en llms.txt-fil for KI-modeller
Dette er min favorittdel. Søk endrer seg. Folk spør ChatGPT og Perplexity om hendelser like ofte som de bruker Google. For å sikre at disse AI-systemene gir nøyaktige svar om CMS Conf, optimaliserte vi nettstedet for dem.
Vi implementerte en llms.txt-fil i roten av nettstedet vårt.
Tenk på det som robots.txt, men for LLM-er. Det gir et strukturert, kontekst-rikt sammendrag av hele konferansen, foredragsholdere, datoer, tech-stack, eksplisitt formatert for AI-inntak. Vi skrev til og med et tilpasset Node.js-skript (scripts/update-llm-txt.js) som kjører ved build-tid for å skanne metadataene våre og holde denne filen perfekt oppdatert.
Resultatet? Når en AI crawler nettstedet vårt, trenger den ikke å gjette. Vi forteller den nøyaktig hva CMS Conf er.
Hva en llms.txt-fil skal inneholde
Konvensjonen bak denne filen er llms.txt-forslaget fra Jeremy Howard, publisert 3. september 2024 og revidert som v2 i august 2026 (llmstxt.org). Forslaget kaller filen llms.txt, med “s”, og det er den stien cmsconf.com svarer på: /llms.txt gir ren tekst og /llms.json gir JSON, mens /llm.txt gir en HTML-side. Formatet er Markdown i fast rekkefølge:
- En H1 med navnet på prosjektet eller nettstedet, det eneste påkrevde elementet.
- Et blokksitat med et kort sammendrag.
- Valgfrie avsnitt eller lister med flere detaljer, uten overskrifter.
- Seksjoner under H2-overskrifter, hver med en lenkeliste på formen
[navn](url)og valgfrie notater.
En seksjon med tittelen “Optional” markerer lenker en agent kan hoppe over når den trenger kortere kontekst. Filen til CMS Conf følger denne formen: H1 er “CMS Conf 2026”, blokksitatet beskriver konferansen, og seksjonen “Project Information” lister agendaen, billettsiden, call for papers og de juridiske sidene. Forslaget beskriver llms.txt som en fil som lever side om side med robots.txt og sitemaps, og ingenting i det forplikter en modell eller en søkemotor til å lese filen.
Slik sjekker du døde lenker i Astro før bygging
Til slutt automatiserte vi de kjedelige tingene. Vi satte opp pre-build-sjekker med astro-link-validator for å sikre at vi aldri sender en ødelagt lenke. Vi validerte omdirigeringene våre i astro.config.mjs for å håndtere legacy-URLer på en elegant måte.
Oppsummering
Å bygge CMS Conf-nettsiden handlet ikke bare om kode; det handlet om å skape et system som tjener brukerne våre (hastighet), teamet vårt (vedlikeholdbarhet) og maskinene som hjelper folk med å finne oss (SEO & AI).
Hvis du bygger en content-rik nettside i 2026, anbefaler jeg på det sterkeste å se på denne Astro + Tailwind + Git-baserte CMS-arkitekturen. Den er slank, den er rask, og den skalerer vakkert.
Se den på: https://cmsconf.com/
Jeg er bare i startgropen. Se deg i Gdynia i november!
#WebDevelopment #AstroJS #TailwindCSS #SEO #AI #CMSConf2026 #TechStack
Se SEO- og GEO-optimalisering.
Et Astro-konferansenettsted trenger fortsatt WordPress KI-integrasjon når CMS-et bak programmet begynner å svare assistenter.







