/stack

Der Stack hinter vaskys.de

Statt einer Liste austauschbarer Tools — die sieben Schichten, aus denen diese Seite entsteht: von Domain und DNS über die Edge bis zur selbstheilenden Content-Pipeline, die alle 48 Stunden einen neuen Post vorschlägt.

  • 7 Schichten
  • Edge-first
  • Free-Tier-Betrieb
  • Stand · Juni 2026
  1. Schicht 1 · Domain & DNS

    Registrar + autoritative Nameserver

    Die Eintrittstür: Domain registriert, Nameserver delegiert, Mail-Records (SPF, DKIM, DMARC, rDNS) sauber gesetzt.

    • Eigene Domain bei einem Registrar mit ordentlichem API-Support
    • Autoritative DNS getrennt vom Registrar — kein Vendor-Lock-in
    • CAA-Record für TLS-Issuer-Pinning
    • SPF + DKIM + DMARC vor Public-Deploy, sonst geht jede Mail ins Spam

    Warum: Tagesjob: DNS-Diagnose und Domain-Lifecycle. Wer hier schludert, debugged später Propagation-Geister.

    Resolver-Kette
  2. Schicht 2 · Edge

    Cloudflare Pages + Workers + KV + Turnstile

    Auslieferung, Caching, kleine APIs an der Edge — eine globale Vorderkante ohne eigenen Server.

    • Cloudflare Pages für Static-Hosting (Astro-Build aus dist/)
    • Pages Functions als Server-Endpunkte (functions/api/*.ts)
    • KV-Namespaces für View-Counter, GitHub-Cache, Rate-Limit
    • Turnstile statt reCAPTCHA — cookieless, DSGVO-freundlich

    Warum: Cold-Start nahe null, geografisch global, kostet im Hobby-Volumen praktisch nichts.

    Edge-Runtime
  3. Schicht 3 · Persistenz

    Supabase Postgres (EU/Frankfurt)

    Eine kleine Postgres-Datenbank in der EU-Region — ausschließlich für das Infrastruktur-Status-Monitoring dieser Seite.

    • Frankfurt-Region (eu-central-1) — Datenstandort innerhalb der EU
    • Genau eine Tabelle: status_targets — überwachte Endpoints
    • Ein Cron-Worker pingt die Ziele alle 6 Stunden
    • PostgREST über direkte HTTPS-Requests — kein SDK, edge-kompatibel

    Warum: Edge-KV deckt den heißen Pfad ab. Postgres kommt nur dort dazu, wo ich eine echte Tabelle mit Verlauf brauche.

    EU-Region · Frankfurt
  4. Schicht 4 · Build & Frontend

    Astro 6 (Static-First) + React-Islands + Tailwind 4

    HTML-Output by default, JavaScript nur wo wirklich nötig.

    • Astro `output: static` — kein SSR, kein Cold-Start
    • MDX-Content-Collection für den Blog — Posts als Text-Dateien
    • React nur in Inseln mit Interaktivität (Kontaktformular, Status-Dashboard)
    • Self-hosted Fonts via @fontsource — keine Google-CDN-Anfrage

    Warum: Lighthouse-grün ohne Tricks. Größtenteils statisches HTML, das jeder Cache versteht.

    Static-Build
  5. Schicht 5 · Continuous Deploy

    Git → Pages, Preview-URLs, sauberes Rollback

    Jeder Push erzeugt eine Preview-URL, Production gated auf Tests + Lighthouse. Rollback per `wrangler pages deploy <sha>`.

    • Git-Repo auf GitHub als Single-Source-of-Truth
    • Cloudflare Pages als Production-Target
    • Pre-Commit-Hook gated `astro check` + `astro build` + lint:fonts
    • Migrations append-only — Datenbank-Änderungen reproduzierbar

    Warum: Skalierbar von Tag eins. Wenn die Seite viral geht, übernimmt das CDN — kein eigener Server, kein 3-Uhr-Anruf.

    Git → CDN
  6. Schicht 6 · AI-augmented Dev

    Claude Code + ECC + Skills + MCP

    Coding-Assistent mit Kontext, Memory und Regeln — kein blindes LLM mehr.

    • Claude Code als Basis-Agent (CLI + IDE)
    • ECC (Everything Claude Code) für Hooks, Cost-Tracking, Continuous-Learning
    • MCP-Server: Live-Docs (context7), ein Code-Graph des Repos und Browser-UI-Verifikation
    • Persistentes Memory unter ~/.claude/ — Regeln und Entscheidungen überleben jede Session

    Warum: Ein zweites Paar fokussierter Augen, das meine Regeln kennt, das Repo als Graph sieht und sich erinnert, was wir letzte Woche entschieden haben.

    Kontext-Schleife
  7. Schicht 7 · AI Content Pipeline

    Autonomer Blog-Bot — alle 48 h ein DE+EN-Post, hinter einem Review-Gate

    Ein Cron triggert eine mehrstufige Pipeline: Trending-Discovery, fundierte Recherche, Entwurf, Kritik, Humanize und Header-Bild — und legt den Post als Entwurf zur Freigabe ab, statt ihn blind live zu schieben.

    • Selbstheilende Modell-Leiter: stärkstes freies LLM zuerst, Failover pro Modell über vier Provider (Cerebras, Gemini, Groq, Cloudflare)
    • Tote oder quota-leere Modelle fallen automatisch raus — ein 429 überspringt ein Modell, nicht den ganzen Anbieter
    • Recherche mit Grounding (Tavily + Hacker News fürs Thema, Gemini-Websuche für die Tiefe) — jeder Post mit Quellen-Sektion
    • Quality-Gates schneiden erfundene Pakete, Studien und CLI-Flags raus, bevor etwas committed wird (fail-closed)
    • Review-Gate: neuer Post → Entwurf + GitHub-Issue per Mail → ich antworte ACK / NACK / EDIT, sonst 24 h Auto-Publish
    • Header-Bild via Cloudflare Workers AI (Stable Diffusion XL, natives 16:9), WebP-Konversion, Auto-Deploy

    Warum: Qualität über Tempo — und nichts blamiert sich: erfundene Fakten werden geblockt, kein neuer Post geht ohne meinen Daumen (oder 24 h Karenz) live. Alle Prompts liegen in prompts/*.md, Voice-Tuning ohne Code-Änderung.

    Selbstheilende Leiter