CMS Tutorials

Site Architectuur & Redactionele Regels

Deze website is een filesystem-gestuurde MDX-site gebouwd met Next.js.

Er is geen CMS, geen database en geen runtime page-generatie.
Alle pagina's, navigatie, widgets en layouts worden tijdens de buildfase afgeleid van het bestandssysteem.

De mapstructuur is de website.


Fundamentele regels

  • Elke pagina is een index.mdx binnen een map
  • Mappen definiëren de URL's
  • Frontmatter definieert metadata en gedrag
  • Widgets zijn MDX-fragmenten, geen pagina's
  • Alle content wordt statisch gegenereerd

Contentmap (single source of truth)

Site Structure

Pagina's en routing

Eén regel:

Alle routable pagina's bevinden zich in /map/index.mdx Er zijn:

Geen losse pagina-bestanden

Geen alternatieve bestandsnamen

Geen dynamische contentmappen

URL-mapping

  • Bestandspad URL
  • content/index.mdx /
  • content/nieuws/index.mdx /nieuws
  • content/nieuws/energie/index.mdx /nieuws/energie
  • De hiërarchie van het bestandssysteem definieert direct de URL-hiërarchie.

Page Frontmatter

Elke pagina kan metadata definiëren via frontmatter.


  • title: "Energie"
  • description: "Ontwikkelingen in de energiemarkt"
  • menu: true
  • icon: "Zap"
  • weight: 2
  • category: Duurzaamheid
  • date: 2024-11-03
  • image: images/energie.jpg

Frontmatter-velden

  • Veld Beschrijving
  • title Paginatitel en menu-label
  • description SEO-beschrijving
  • menu Opnemen in navigatie
  • icon Menu-icoon (Lucide)
  • weight Volgorde in overzichten
  • category Categorie-label
  • date Artikelen of nieuws
  • image Optionele teaserafbeelding -_intro.mdx (script-only helper)
  • Optioneel bestand

Wordt nooit als pagina gerenderd

Alleen gebruikt door build-scripts

Doel:

Sectie-introductietekst

Sectie-icoon voor menu’s of overzichten

Widgets (MDX-fragmenten)

Widgets zijn MDX-bestanden die worden weergegeven binnen paginalay-out panels.

Kenmerken:

Zijn geen pagina's

Hebben geen routes

Gebruiken dezelfde MDX-renderingpipeline als pagina's

Globale widgets (content/widgets/)

Globale widgets gelden site-breed.

Plaatsing op basis van bestandsnaam

Bestandsnaam Locatie rendering -_widget_left*.mdx Linker paneel -_widget_home*.mdx Middenpaneel -_widget_right*.mdx Rechterpaneel -_widget_news.mdx Midden (speciaal) -_widget_news_titles.mdx Rechts (speciaal)

Kenmerken: Server-side geladen Gecompileerd met compileMDX

Statisch tijdens runtime

Sectie-specifieke widgets (_widgets.mdx)

Elke map mag een _widgets.mdx bestand bevatten.

Dit bestand definieert rechterpaneel-widgets die specifiek zijn voor die sectie.

Resolutievolgorde Voor een pagina op:

content/nieuws/energie/index.mdx Zoekt het systeem in deze volgorde:

content/nieuws/energie/_widgets.mdx

content/nieuws/_widgets.mdx

Globale widgets

Het dichtstbijzijnde _widgets.mdx wint.

Widget scope regels

_widgets.mdx beheert alleen het rechterpaneel

Overschrijft globale rechterwidgets

Linker- en middenwidgets blijven globaal

Dit maakt contextuele zijcontent mogelijk zonder dat de layout-inconsistent wordt.

Homepage gedrag (/) De homepage is altijd:

content/index.mdx Speciaal gedrag:

Laadt altijd globale widgets

Layout past automatisch aan:

éénkoloms

tweekoloms

driekoloms

Prioriteit middenpaneel

Nieuws-widget

Home-widgets

Paginacontent fallback

Statische generatie Tijdens de build:

Wordt het bestandssysteem gescand

Elke map met index.mdx wordt een route

Alle pagina's worden statisch gegenereerd

Geen bestandssysteem-toegang tijdens runtime

Dit garandeert:

Voorspelbare builds

Cachebare pagina's

Geen productie I/O

Gegeneerde MDX (build-scripts)

Sommige MDX-bestanden worden gegenereerd door scripts:

Nieuws-widgets

Sectie-overzichtspagina's

Gegenereerde content:

Geldige MDX

Bevindt zich in content/

Wordt gecommit naar de repository

Wordt gerenderd als elke andere pagina of widget

Scripts genereren MDX, niet HTML.

Redactionele regels

Pagina's aanmaken Doen:

Altijd een map aanmaken

Altijd index.mdx gebruiken

Consistent frontmatter gebruiken

Niet doen:

Losse .mdx bestanden maken

index.mdx hernoemen

Pagina's maken die met _ beginnen

Gebruik van widgets Doen:

_widgets.mdx gebruiken voor sectie-specifieke zijcontent

Globale widgets gebruiken voor herbruikbare elementen

Widgets kort en gefocust houden

Niet doen:

Hoofdartikelen in widgets plaatsen

Widgets gebruiken voor navigatie

Afhankelijk zijn van volgorde van widgets tussen secties

Gebruik van Frontmatter Doen:

weight gebruiken voor volgorde

category spaarzaam gebruiken

Geldige Lucide-iconnamen gebruiken

Niet doen:

Titels dupliceren binnen dezelfde sectie

JSX gebruiken in frontmatter

Vertrouwen op impliciete mapvolgorde

Afbeeldingen Gebruik relatieve paden

Optimaliseer afbeeldingen voor commit

Altijd betekenisvolle alt-tekst meegeven

Mentale model Mappen definiëren URL's

index.mdx definieert pagina's

Widgets zijn MDX-fragmenten

Scripts genereren MDX, niet HTML

Next.js rendert alleen statische content

Elite-Sport Performance Management

Sports Coaching

Discover a complete approach to sports coaching, with programs and insights for cycling, performance training, and talent development. From structured cycling workouts and zone-based training to AI-supported coaching platforms, we help athletes at every level train smarter, improve performance, and achieve their goals. Join our community of riders and benefit from expert guidance, practical tools, and evidence-based strategies to maximize results.

Read more

Companies

Dutch Disruption

At Dutch Disruptions, we create innovative apps and trading tools that make information and insights accessible to everyone.

Our apps — from Immoinfo and GIGAgoedkoopste to DJtracks, radarITALIA, Corona-Warn-App BLOCKER, and jouwNIEUWS — deliver real-time data, personalized tools, and enhanced privacy, all available on the App Store and Google Play.

Dutch Disruption