Der Stack — und warum

Jede Wahl ist eine Entscheidung mit Begründung.

Astro 6

SSG-first · Islands

Statisch by default — jede Seite, die nicht dynamisch sein muss, ist es auch nicht. Interaktivität kommt als gezielte Insel hinzu, nicht als App-weite Laufzeit.

Svelte 5

genau ein Insel-Framework

Eine einzige UI-Bibliothek für alles Interaktive — Theme-Wechsel und Kontaktformular. Kompiliert, schlank, ohne Virtual-DOM-Overhead.

Natives CSS + Design-Tokens

kein Tailwind

Eine Single Source of Truth für Farben, Spacing und Type-Scale. Container-Queries, logische Properties und fluide clamp()-Skalen — die Plattform statt einer Abstraktion darüber.

Ashacore Control Plane

Content-Backend

Veröffentlichte Inhalte können aus einem getrennten Control-Plane-Backend geladen werden. Die öffentliche Website bleibt schlank, während Redaktion, Rollen und spätere Backend-Fähigkeiten sauber separiert sind.

Ubuntu Server

kontrollierte Laufzeit

Die Seite läuft auf einem eigenen Ubuntu-Server. Dadurch bleiben Laufzeit, Logs, Konfiguration und Betriebsentscheidungen nachvollziehbar — keine Blackbox, sondern eine bewusst kontrollierte Umgebung.

Coolify

Self-hosted PaaS

Coolify übernimmt Deployment, Prozessverwaltung, Domain-Anbindung, TLS und Git-Integration für die betriebenen Komponenten. Plattform-Komfort, aber auf eigener Infrastruktur — mit klarer Kontrolle über Betrieb und Umgebung.

GitHub + CI/CD

push · prüfen · deployen

Änderungen laufen nicht manuell per FTP oder Shell-Kopie in Produktion. Jeder relevante Stand wird versioniert, automatisch geprüft und anschließend kontrolliert ausgeliefert.

Typsichere Inhalte

Zod · TypeScript strict

Inhalte sind modelliert, nicht hingestreut. Strukturfehler fallen beim Build auf — nicht erst beim Besucher.

Qualitäts-Gates

check · lint · test · e2e

astro check, ESLint, Prettier, Vitest und Playwright. Grün vor jedem Commit — die Disziplin, die Wartbarkeit überhaupt erst möglich macht.

Prinzipien, sichtbar im Code

Haltung, die nicht bei Worten endet.

Langweilige Technik gewinnt
Astro, Svelte, npm — etablierte Werkzeuge statt einer Wette auf den nächsten Trend.
Typen vor Laufzeit
TypeScript strict und Zod-Schemas. Der Build ist die erste Code-Review.
Wenige, bewusste Abhängigkeiten
Eine Handvoll Laufzeit-Dependencies. Jede ist eine dokumentierte Entscheidung.
Betrieb wird mitgedacht
Frontend und Backend haben klare Verantwortlichkeiten: öffentliche Auslieferung hier, redaktionelle Backend-Fähigkeiten in der Control Plane.
Deployment ist Architektur
Der Lieferprozess ist kein nachträgliches Shell-Skript. Code, Build, Tests und Deployment gehören sichtbar zusammen.
Betrieb bleibt nachvollziehbar
Serverlogs, Buildlogs und CI-Ausgaben bilden eine prüfbare Kette vom Commit bis zur laufenden Anwendung.
Secrets bleiben außerhalb des Codes
Tokens, API-Keys und produktive Konfiguration liegen in Umgebungsvariablen — nicht im Repository.

Von Commit bis Produktion

Ein Lieferprozess, der mitgedacht ist.

Diese Seite ist nicht nur gebaut, sondern lieferbar gemacht. Änderungen entstehen lokal, werden versioniert, automatisch geprüft und erst danach auf dem Server ausgerollt. Der Deployment-Prozess ist Teil der Architektur — nicht ein nachträglicher manueller Schritt.

Code
Änderungen entstehen lokal im Projekt, mit denselben Regeln und Qualitätsansprüchen wie der spätere Build.
GitHub Repository
Der relevante Stand wird versioniert und nachvollziehbar gemacht, statt direkt auf dem Server verändert zu werden.
CI-Gates
Automatische Prüfungen validieren Typen, Linting, Tests, Build und E2E-Verhalten, bevor ausgeliefert wird.
Deploy
Erst nach erfolgreichen Gates wird der geprüfte Stand kontrolliert ausgeliefert.
Build
Die Anwendung wird reproduzierbar aus dem versionierten Stand gebaut, inklusive statischer Assets.
Backend
Published Content und redaktionelle Funktionen liegen in der Ashacore Control Plane.
Live-Seite
Ausgeliefert wird der geprüfte Stand — beobachtbar über Buildlogs, Serverlogs und den laufenden Betrieb.

Performance & Zugänglichkeit

  • Keine Web-Font-Abhängigkeit — ein sorgfältiger System-Font-Stack. Sofortiger erster Paint, kein FOUT.
  • Seiteninhalte werden statisch ausgeliefert; interaktiv wird nur eine Handvoll kleiner Inseln — Theme-Wechsel und das Kontaktformular.
  • Respektiert prefers-reduced-motion und prefers-color-scheme; Theme-Wechsel ohne Flash.
  • Progressive Enhancement: ohne JavaScript bleiben Navigation, Inhalte und alle Texte voll nutzbar.
  • Semantisches HTML, Fokus-Management, Skip-Link und durchgehende Tastatur-Bedienung.
  • Statische Auslieferung der öffentlichen Website; Backend-Funktionen laufen getrennt in der Control Plane.
  • Reproduzierbare Builds aus einem versionierten Git-Stand statt manueller Serveränderungen.

Sicherheit & Recht

  • Frontend ohne Mail-Secrets; veröffentlichte Inhalte werden über die Control Plane gelesen.
  • Secrets ausschließlich über Umgebungsvariablen — niemals im Repository.
  • Kontrollierter Rollout: erst grüne CI-Gates (check · lint · test · build · e2e), dann automatischer Deploy — kein ungetesteter Code in Produktion.
  • Content-Security-Policy über die native Astro-6-API vorbereitet.
  • Deployment über GitHub Actions und Coolify: erst prüfen, dann ausliefern.
  • Produktive Secrets liegen ausschließlich in der Laufzeitumgebung und werden nicht committet.
  • Die öffentliche Seite beschreibt Prinzipien — keine Webhook-URLs, Tokens, Admin-Pfade oder produktiven Details.

Nichts davon ist spektakulär — und genau das ist der Punkt. Software, die Jahre tragen soll, gewinnt nicht durch das Neueste, sondern durch klare, begründete und beobachtbare Entscheidungen. Der Stack ist nur die sichtbare Oberfläche. Interessant wird es dort, wo Code zuverlässig gebaut, geprüft, ausgeliefert und betrieben wird.Sprechen wir darüber.