Background Decoration
13.7.2026Dietrich Bojko12 Min. Lesezeit

Next.js Setup & Grundstruktur für dein Headless CMS

Zurück zur Übersicht
Next.js Setup & Grundstruktur für dein Headless CMS
Bild mit KI generiert.
Bild mit KI generiert.
0 Views

Häufig gestellte Fragen (FAQ)

Technisch gesehen: Ja. Architektonisch gesehen: Bitte nicht. Der Pages Router (/​pages) gilt mittlerweile als veraltet. Wenn du heute ein neues Enterprise-Projekt aufsetzt, ist der App Router (/​app) der De-facto-Standard. Nur mit dem App Router profitierst du vollumfänglich von React Server Components, Streaming, verschachtelten Layouts und dem drastisch reduzierten JavaScript-Bundle für den Browser.

Warum legen wir unsere React-Komponenten nicht einfach mit in den app/ Ordner?
Next.js erlaubt das durch "Colocation" (Dateien, die nicht page.tsx heißen, werden nicht als Route interpretiert). In großen Headless-Projekten wird der app/-Ordner dadurch aber extrem unübersichtlich. Ein strikt getrennter src/​components/-Ordner zwingt dich dazu, Routing-Logik (URLs, Parameter, API-Fetches) strikt von der UI-Logik (Buttons, Grids, Typografie) zu trennen. Das erhöht die Testbarkeit und Wartbarkeit massiv.

Das ist ein häufiger Kritikpunkt an Tailwind. In einer komponenten-basierten Architektur wie React ist das jedoch kein Problem. Anstatt 15 Tailwind-Klassen auf jeder Seite neu zu tippen, kapselst du sie einmal in deiner <Button /> Komponente. Dein eigentlicher Code bleibt sauber (<Button variant="primary">Klick mich</​Button>). Alternativen wie CSS-in-JS (Styled Components) oder klassische SCSS-Module funktionieren ebenfalls, stoßen aber im App Router (da sie oft Laufzeit-JavaScript benötigen) schnell an Kompatibilitätsgrenzen mit Server Components. Tailwind ist hier der sicherste Weg.

Die Faustregel lautet: Nutze 'use client' ausschließlich, wenn deine Komponente eine der folgenden Interaktionen zwingend benötigt:

  • Browser-APIs (wie window, document, localStorage, navigator)

  • React State-Hooks (useState, useReducer)

  • React Lifecycle-Hooks (useEffect, useLayoutEffect)

  • Event-Listener (onClick, onChange, onSubmit)
    Datenabfragen an das CMS sollten im Idealfall immer ohne 'use client' in einer Server Component stattfinden.

Dein nächster Schritt: Dynamisches Routing & Navigation

Das Frontend-Fundament ist gegossen. Server Components und Tailwind stehen bereit. Doch aktuell haben wir nur eine starre, fest programmierte Startseite (app/page.tsx).

Ein echtes CMS lebt von seiner dynamischen Seitenstruktur. Der Redakteur legt in Contao beliebig viele neue Seiten an ("Über uns", "Team", "Karriere"), verschachtelt sie und erwartet, dass das Frontend diese URLs automatisch verarbeitet und in einer globalen Navigation darstellt.

Im kommenden Teil 8: Dynamisches Routing & Navigation erwecken wir unseren Next.js Router zum Leben. Du wirst lernen:

  • Die Catch-All Route: Wie wir mit dem Konstrukt app/[...slug]/page.tsx jede erdenkliche URL (z.B. /unternehmen/standorte/berlin) abfangen und an Contao weiterleiten.

  • Den Seitenbaum nachbauen: Wie wir den hierarchischen Contao-Seitenbaum 1:1 im Next.js-Frontend abbilden.

  • Dynamische Navigationen: Wir generieren aus dem JSON-Payload des CMS eine performante, verschachtelte Hauptnavigation, die serverseitig vorgerendert wird.

  • 404 Handling: Wie wir elegant mit Seiten umgehen, die in der API nicht existieren oder offline genommen wurden.

Jetzt starten: Teil 8 – Dynamisches Routing & Navigation in Next.js

Dietrich Bojko
Über den Autor

Dietrich Bojko

Senior Webentwickler

Webinteger arbeitet seit vielen Jahren produktiv mit Linux-basierten Entwicklungsumgebungen unter Windows.
Der Fokus liegt auf performanten Setups mit WSL 2, Docker, PHP, Node.js und modernen Build-Tools in realen Projekten – nicht auf theoretischen Beispielkonfigurationen.

Die Artikel dieser Serie entstehen direkt aus dem täglichen Einsatz in Kunden- und Eigenprojekten und dokumentieren bewusst auch typische Fehler, Engpässe und bewährte Workarounds.

Webseite besuchen

Das könnte Sie auch interessieren

Schreiben Sie einen Kommentar