notes
Published en private content opsplitsen
Een praktische notitie over het scheiden van publicatiestatus en zichtbaarheid in productie binnen mijn Astro-contentworkflow.
Toen de repositorystructuur duidelijker werd, heb ik opgeschoond hoe posts en projecten getoond of verborgen worden. Ik wilde niet dat elk contentbestand alleen maar volledig publiek of volledig afwezig kon zijn.
De workflow moest twee aparte vragen beantwoorden:
- is deze pagina klaar om deel uit te maken van de site?
- als ze deel uitmaakt van de site, mag ze dan zichtbaar zijn in productie?
Die beslissingen hangen samen, maar ze zijn niet hetzelfde.
De frontmattervorm
Posts en projecten gebruiken nu twee expliciete velden:
published: true
private: false
published bepaalt of de pagina deel uitmaakt van de site. private bepaalt of ze buiten productie moet blijven.
Dat onderscheid geeft mij een nuttige controlefase. Ik kan een draft lokaal renderen, de layout en metadata controleren en die toch van de publieke site weghouden tot alles klaar is.
De filterregel
De implementatie blijft bewust klein: ongepubliceerde pagina’s zijn verborgen, publieke pagina’s zijn zichtbaar en private pagina’s zijn alleen beschikbaar buiten productie.
Omdat die logica in de gedeelde content helper zit, moeten routepagina’s dezelfde checks niet herhalen. Posts en projecten kunnen dezelfde regel gebruiken voordat ze gesorteerd of op locale gefilterd worden.
Waarom dit helpt
Dit maakte contentwerk een stuk veiliger. Ik kan een post maken of aanpassen zonder meteen te beslissen dat die op de live site thuishoort.
Het helpt ook bij projectpagina’s. Sommige portfolio-items vragen meer controle omdat ze ouder werk, externe links, afbeeldingen of technische claims bevatten. Door ze lokaal zichtbaar te houden, kan ik ze verfijnen zonder drafts te verwijderen of de publicatieworkflow zwakker te maken.
Tradeoffs
De tradeoff is een extra frontmatterveld om te onderhouden. Dat is aanvaardbaar omdat het gedrag expliciet is en in elk bestand makkelijk te controleren blijft.
Belangrijk is dat templates en prompts dezelfde default respecteren. Nieuwe content kan met private: true beginnen en pas publiek worden wanneer de pagina bewust klaar is.
Resultaat
Deze refactor maakte de contentworkflow minder breekbaar. Hij gaf mij een duidelijk pad om aan drafts te werken, ze lokaal te controleren en ze pas te publiceren wanneer ze echt publiek bedoeld zijn.