Implements the Astro application: bilingual file-based routes, typed Markdown content, localized rendering, global layout, and progressively enhanced browser interactions.
- Static generation: route files prerender HTML at build time.
- Canonical-entry localization: English IDs drive both language route sets; German files are overlays paired by filename.
- Root-locale routing: German uses
/, English uses/en/. - Server-first rendering: there are no hydrated framework islands; scripts use Astro navigation lifecycle events.
- Shared layout composition: every HTML page renders through
BaseLayout.astro.
content.config.tsloadsblog,blogDe,projects, andprojectsDeand validates frontmatter with Zod.- Pages and homepage sections call
getCollection()during static generation. lib/content-helpers.tsjoins German entries to English IDs and chooses localized copy and slugs.- Route files pass page metadata and language to
layouts/BaseLayout.astro. - The layout composes SEO, structured data, header/footer, and page content, then binds client behavior on
astro:page-load.
| Route source | Output |
|---|---|
pages/index.astro |
/ German home |
pages/en/index.astro |
/en/ English home |
pages/blog/index.astro |
/blog/ German writing index |
pages/en/blog/index.astro |
/en/blog/ English writing index |
pages/blog/[post].astro |
/blog/{German urlSlug or English ID}/ |
pages/en/blog/[post].astro |
/en/blog/{English ID}/ |
pages/work/index.astro |
/work/ German project index |
pages/en/work/index.astro |
/en/work/ English project index |
pages/work/[post].astro |
/work/{German urlSlug or English ID}/ |
pages/en/work/[post].astro |
/en/work/{English ID}/ |
pages/rss.xml.ts |
Combined RSS feed |
pages/404.astro |
Static noindex error page |
Dynamic paths are generated from English collections. German detail pages render the paired German body when present and otherwise fall back to English. Blog relations use tag overlap; project navigation uses the order field.
content/blog/*.md: canonical English articles.content/blog/de/*.md: German article translations and localized slugs.content/projects/*.md: canonical English projects.content/projects/de/*.md: German project translations and localized slugs.
Frontmatter drives route identity, list sorting, filters, SEO, JSON-LD, and RSS. Translation identity is currently implicit in matching filenames.
astro:contentfor collection loading and Markdown rendering.astro:transitionsfor client-side navigation.@astrojs/rssand@astrojs/sitemapfor discovery feeds.motionfor reveal and magnetic effects.- Tailwind CSS v4 and
styles/global.cssfor the visual system. - Cloudflare adapter and Wrangler for deployment.