// ARCHITECTURE
Architecture
How voegele.dev is structured — Next.js App Router, routes, and stack.
voegele.dev is a single Next.js 16 application (App Router, Turbopack) on React 19 and TypeScript, styled with Tailwind plus a layer of hand-written CSS variables. It deploys statically to Vercel from main.
Routes
/— the home page: hero, then the content sections, the playground, and contact/lab— Signal Pit, the physics sandbox (Experiment 01)/blogand/blog/[post]— writing, one static route per post/work/[project]— project case studies/docs— this documentation, also served at docs.voegele.dev
Rendering
Almost everything is statically prerendered — the home page, blog, case studies and lab are all static HTML. The docs are the one exception: they read the request host to serve clean URLs on the subdomain and set per-host canonicals, which makes them dynamic. That is a deliberate, contained trade-off; see SEO & Metadata.
Layout of the code
components/
├── sections/ # Home page sections: Hero, About, Skills,
│ # CloudDevOps, Homelab, Projects, LabSection,
│ # Hobbies, Contact, Nav, Footer
├── effects/ # SignalGrid, Aurora, MountainBackdrop, ScrollProgress
├── primitives/ # GlareField, LiveTerminal, Magnetic, FadeIn…
├── lab/ # SignalPit (three + rapier, fully self-contained)
├── blog/ work/ # PostLayout, CaseStudy shells
├── docs/ # this section's shell + content
└── providers/ # PerfProvider (tiering), SmoothScroll (Lenis)
lib/ # gsap registration, posts + docs registriesThe two providers wrap the whole app in app/layout.tsx: PerfProvider decides how much the machine can handle, and SmoothScroll wires up Lenis. Both are covered in their own pages.