Statische Personal-Brand-Website fuer Tedd Schreiner mit Schwerpunkt auf DevOps, Netzwerkautomatisierung, technischen Projekten und einem zurueckhaltend eingebundenen Mentoring-Nebenprojekt.
- Astro
- TypeScript
- Tailwind CSS ueber das Vite-Plugin
- MDX
- Astro Content Collections
- Static Build fuer Cloudflare Pages
npm ci
npm run dev
npm run check
npm run build
npm run quality
npm run previewnpm run quality ist das Quality Gate vor PR, Push oder Deployment-relevanten Aenderungen. Der GitHub-Actions-Workflow .github/workflows/quality.yml fuehrt denselben Check mit npm ci aus.
GitHub Actions ist hier bewusst nur ein Qualitaetsgate. Cloudflare Pages baut weiter direkt aus Git und braucht dafuer keine Deployment-Secrets im Repository.
- Production Branch:
main - Build Command:
npm run build - Output Directory:
dist - Node.js:
22.12.0oder neuer, in Cloudflare Pages bei BedarfNODE_VERSION=22.12.0 - Kein Wrangler erforderlich; die Seite bleibt ein statischer Astro-Build.
Das Kontaktformular laeuft ueber eine Cloudflare Pages Function unter functions/api/contact.ts und versendet E-Mails per Resend. Dafuer muessen in Cloudflare Pages diese Umgebungsvariablen gesetzt sein:
RESEND_API_KEY=...
CONTACT_FROM_EMAIL=Website Kontakt <kontakt@teddschreiner.de>
CONTACT_TO_EMAIL=info@teddschreiner.de
CONTACT_FROM_EMAIL muss bei Resend als Absender-Domain verifiziert sein. Ohne diese Variablen zeigt das Formular eine Fehlermeldung und verweist auf die direkte E-Mail.
public/CNAME enthaelt die Custom Domain. public/_headers wird in den Build kopiert, setzt Security-Header und haelt *.pages.dev-URLs per X-Robots-Tag auf noindex. src/pages/404.astro erzeugt dist/404.html.
Dieses Repository nutzt ein statisches public/robots.txt statt einer src/pages/robots.txt.ts-Route. Die Sitemap wird ueber src/pages/sitemap.xml.ts erzeugt.
- Blogposts:
src/content/blog - Projekte:
src/content/projects - Experience-Daten:
src/content/experience - Site-Daten und Navigation:
src/lib/site.tsundsrc/content/site
- Optimierbare UI-Bilder liegen unter
src/assets, damit Astro sie fuer den Build responsiv verarbeiten kann. publicbleibt fuer unverarbeitete statische Dateien wieCNAME,_headers,robots.txt, Favicons und stabile OG-Bilder.
Google Analytics 4 ist mit der Mess-ID G-W6T1TJ8W7N integriert. Der Google-Tag wird erst nach aktiver Zustimmung im Cookie-Hinweis geladen; ohne Zustimmung bleiben Analytics Storage und ad-bezogene Consent-Flags auf denied.
Erfasste Website-Events nach Zustimmung:
page_viewselect_contentfuer Projekt- und Blog-Kartencontact_cta_clickview_cvcontact_email_clickemail_copysocial_clickcontact_form_submitgenerate_leadbei erfolgreichem Kontaktformularversandcontact_form_error
In Google Analytics kann generate_lead optional als Key Event markiert werden.
Draft-Blogposts bleiben aus statischen Blog-Routen, RSS und Sitemap heraus. RSS wird ueber src/pages/rss.xml.ts erzeugt, die Sitemap ueber src/pages/sitemap.xml.ts; public/robots.txt verweist auf die Production-Sitemap.
npm run qualitylokal ausfuehren.- Cloudflare Pages baut
main. - Build Command ist
npm run build, Output Directory istdist. - Node-Version ist
22.12.0oderNODE_VERSION=22.12.0. - Custom Domain
teddschreiner.deist aktiv. http://teddschreiner.desowiewww.teddschreiner.desind in Cloudflare Pages/DNS erreichbar und werden perpublic/_redirectsdauerhaft aufhttps://teddschreiner.deweitergeleitet.- Preview- und
pages.dev-URLs liefern weiternoindex; bei zusaetzlichen Branch-Domains ausserhalb des Repos dieselbe Regel mitpruefen.
Die lokalen Migrationsquellen repomix.txt und planung_audit.txt bleiben unveroeffentlicht.