diff --git a/apps/web/app/(site)/page.tsx b/apps/web/app/(site)/page.tsx
index 3023b47..eb085a9 100644
--- a/apps/web/app/(site)/page.tsx
+++ b/apps/web/app/(site)/page.tsx
@@ -1,311 +1,44 @@
-"use client";
+import type { Metadata } from "next";
+import { BuiltAndRunning } from "@/src/components/home/BuiltAndRunning";
+import { CapacityBlocks } from "@/src/components/home/CapacityBlocks";
+import { FinalCta } from "@/src/components/home/FinalCta";
+import { Hero } from "@/src/components/home/Hero";
+import { HomeJsonLd } from "@/src/components/home/HomeJsonLd";
+import { HowIShip } from "@/src/components/home/HowIShip";
+import { ProofStrip } from "@/src/components/home/ProofStrip";
+import { WebsitesSection } from "@/src/components/home/WebsitesSection";
+import { WhatIDo } from "@/src/components/home/WhatIDo";
+import { SITE_NAME } from "@/src/content/site";
-import { Reveal } from "@/src/components/Reveal";
-import { Section } from "@/src/components/Section";
-import { H1, H3, LeadText, BodyText, Label } from "@/src/components/Typography";
-import { Button } from "@/src/components/Button";
-import { HeroSection } from "@/src/components/HeroSection";
-import { Availability } from "@/src/components/Availability";
-import { AbstractCircuit, GradientMesh } from "@/src/components/Effects";
-import { Marker } from "@/src/components/Marker";
-import { GlitchText } from "@/src/components/GlitchText";
+const TITLE = `${SITE_NAME}: senior engineer for AI-built software`;
+const DESCRIPTION =
+ "Senior engineer for teams that build fast with AI and don't want chaos. Spec-first, test-driven, mutation-checked. Booked in weekly capacity blocks.";
-export default function LandingPage() {
+export const metadata: Metadata = {
+ title: { absolute: TITLE },
+ description: DESCRIPTION,
+ alternates: { canonical: "/" },
+ openGraph: {
+ title: TITLE,
+ description: DESCRIPTION,
+ url: "/",
+ type: "website",
+ siteName: SITE_NAME,
+ },
+};
+
+export default function HomePage() {
return (
-
-
-
-
- {/* Section 02: Ihr Vorteil */}
-
-
-
-
- Sie kümmern sich um Ihr Geschäft.{" "}
-
- Ich mich um Ihre Website.
-
-
-
-
-
- {[
- {
- title: "Ein Ansprechpartner",
- text: "Direkte Kommunikation. Keine Agentur, keine Projektmanager, kein Stille-Post-Effekt.",
- },
- {
- title: "Fixpreis",
- text: "Keine versteckten Kosten, keine Stundenzettel. Sie wissen exakt, was es kostet.",
- },
- {
- title: "Schnelle Ergebnisse",
- text: "Kein monatelanges Warten. Erste Entwürfe innerhalb weniger Tage.",
- },
- {
- title: "Null Arbeit für Sie",
- text: "Keine CMS-Einarbeitung. Änderungen oder Updates? Eine kurze E-Mail genügt.",
- },
- ].map((item, i) => (
-
-
-
-
-
- {item.text}
-
-
-
- ))}
-
-
-
-
- {/* Section 03: Der Unterschied */}
-
-
-
-
- Warum nicht einfach{" "}
- eine Agentur?
-
-
-
-
- {[
- {
- label: "Agentur",
- text: "Projektmanager, Designer, Entwickler — Sie erklären alles drei Mal. Stundenabrechnungen, unklare Endkosten.",
- },
- {
- label: "Baukasten (Wix, etc.)",
- text: "Sie bauen selbst, kämpfen mit Templates und sind auf sich allein gestellt, wenn etwas nicht funktioniert.",
- },
- {
- label: "Bei mir",
- text: "Ein Ansprechpartner. Fixpreis. Ich baue, Sie lehnen sich zurück. Sie brauchen eine Änderung? Kurze Nachricht genügt.",
- highlight: true,
- },
- ].map((item, i) => (
-
-
-
-
-
-
-
- {item.text}
-
-
-
-
- ))}
-
-
-
-
- {/* Section 04: Zielgruppe */}
-
-
-
-
- Fokus auf das Wesentliche.
-
-
-
-
-
-
-
- Unternehmer & Geschäftsführer
-
-
- Sie brauchen eine professionelle Website, die Ihr Unternehmen
- repräsentiert — ohne sich selbst mit Technik beschäftigen zu
- müssen. Ich übernehme alles.
-
-
-
-
-
-
- Selbstständige & kleine Teams
-
-
- Sie wollen online sichtbar sein, aber keine Zeit in eine
- Website stecken. Ich liefere eine fertige Lösung, damit Sie
- sich auf Ihre Kunden konzentrieren können.
-
-
-
-
-
-
-
- {/* Section 05: Leistungen */}
-
-
- {[
- {
- title: "Websites",
- text: "Professionelle, schnelle Websites — individuell für Ihr Unternehmen gestaltet. Ohne Overhead.",
- href: "/websites",
- },
- {
- title: "Sorglos-Paket",
- text: "Änderungen, Wartung, Sicherheit — alles inklusive. Sie sagen Bescheid, ich erledige das.",
- href: "/contact",
- },
- {
- title: "Web-Anwendungen",
- text: "Kundenportale, interne Tools oder individuelle Lösungen für Ihr Business.",
- href: "/showcase",
- },
- ].map((service, i) => (
-
-
-
+ Senior engineer for teams that build fast with AI and don't
+ want chaos. Spec-first, test-driven, mutation-checked. Booked in
+ weekly capacity blocks.
+
+
+ Book a 20 min call
+
+ See how I ship
+
+
+
+
+
+ {REPORT_LINES.map((line) => (
+
+ {line.label}
+ {line.value}
+
+ ))}
+
+
+ Example format. Every real delivery lists the exact commands and
+ their results.
+
+
+
+
+ {STACK.join(" · ")}
+
+
+
+);
diff --git a/apps/web/src/components/home/HomeJsonLd.tsx b/apps/web/src/components/home/HomeJsonLd.tsx
new file mode 100644
index 0000000..8c8d6bc
--- /dev/null
+++ b/apps/web/src/components/home/HomeJsonLd.tsx
@@ -0,0 +1,21 @@
+import { SITE_NAME, SITE_URL } from "@/src/content/site";
+
+const STRUCTURED_DATA = {
+ "@context": "https://schema.org",
+ "@type": "ProfessionalService",
+ name: SITE_NAME,
+ url: SITE_URL,
+ description:
+ "Senior freelance engineer for teams that build fast with AI: web apps, AI-code rescue, automation and Web3 frontends.",
+ founder: { "@type": "Person", name: SITE_NAME },
+} as const;
+
+/** Serialized server-side from constants only; "<" is escaped to keep it inert inside a script tag. */
+export const HomeJsonLd: React.FC = () => (
+
+);
diff --git a/apps/web/src/components/home/HowIShip.tsx b/apps/web/src/components/home/HowIShip.tsx
new file mode 100644
index 0000000..63cc046
--- /dev/null
+++ b/apps/web/src/components/home/HowIShip.tsx
@@ -0,0 +1,61 @@
+import Link from "next/link";
+import { Container, SectionHeader } from "@/src/components/site";
+
+const STEPS: readonly { name: string; text: string }[] = [
+ {
+ name: "Spec first",
+ text: "The behavior is written down as concrete cases before any code.",
+ },
+ {
+ name: "Red",
+ text: "The tests run and fail for the right reason: missing behavior.",
+ },
+ {
+ name: "Green",
+ text: "The simplest clean implementation that makes them pass.",
+ },
+ {
+ name: "Mutation check",
+ text: "Mutation testing on the changed code shows whether the tests really catch bugs.",
+ },
+ {
+ name: "Delivery report",
+ text: "Every pull request lists the exact commands that were run and their results.",
+ },
+];
+
+export const HowIShip: React.FC = () => (
+
+
+
+
+ {STEPS.map((step, index) => (
+
+
+ {String(index + 1).padStart(2, "0")}
+
+
+ {step.name}
+
+
{step.text}
+
+ ))}
+
+
+
+ Read the full process and a sample report
+
+
+
+
+);
diff --git a/apps/web/src/components/home/ProofStrip.tsx b/apps/web/src/components/home/ProofStrip.tsx
new file mode 100644
index 0000000..dd8b9cf
--- /dev/null
+++ b/apps/web/src/components/home/ProofStrip.tsx
@@ -0,0 +1,23 @@
+import { Container, Stat } from "@/src/components/site";
+
+const FACTS: readonly { value: string; label: string }[] = [
+ { value: "15 years", label: "in web, apprenticeship from 2011" },
+ { value: "Team lead", label: "frontend team lead at an agency" },
+ { value: "Since 2021", label: "working fully remote" },
+ {
+ value: "7 chains",
+ label: "Rust + Solidity DeFi system with a zero-survivor mutation gate",
+ },
+];
+
+export const ProofStrip: React.FC = () => (
+
+
+
+ {FACTS.map((fact) => (
+
+ ))}
+
+
+
+);
diff --git a/apps/web/src/components/home/WebsitesSection.tsx b/apps/web/src/components/home/WebsitesSection.tsx
new file mode 100644
index 0000000..6e52a3c
--- /dev/null
+++ b/apps/web/src/components/home/WebsitesSection.tsx
@@ -0,0 +1,33 @@
+import { Container, SectionHeader } from "@/src/components/site";
+
+const SPRINT_POINTS: readonly string[] = [
+ "Time-boxed sprint with a clear scope list, from 3,800 EUR. Extra work is a follow-up block, not open scope.",
+ "Static Next.js site: no CMS and no server for you to run.",
+ "Hosting, SSL and domain renewal are included in a flat monthly plan.",
+ "Changes by email, no CMS training.",
+];
+
+export const WebsitesSection: React.FC = () => (
+
+
+
+
+ {SPRINT_POINTS.map((point) => (
+
+
+ +
+
+ {point}
+
+ ))}
+
+
+ Not part of it: email and DNS administration.
+
+
+
+);
diff --git a/apps/web/src/components/home/WhatIDo.tsx b/apps/web/src/components/home/WhatIDo.tsx
new file mode 100644
index 0000000..1c7ed04
--- /dev/null
+++ b/apps/web/src/components/home/WhatIDo.tsx
@@ -0,0 +1,46 @@
+import { Container, SectionHeader } from "@/src/components/site";
+
+const OFFERS: readonly { title: string; text: string }[] = [
+ {
+ title: "Web and web apps",
+ text: "Next.js and TypeScript with strong design and frontend work, plus light backend for APIs, auth and integrations.",
+ },
+ {
+ title: "AI-code rescue",
+ text: "A 1-week entry block: audit of an AI-built codebase, test foundation, mutation baseline and a prioritized report.",
+ },
+ {
+ title: "CLI tools and automation",
+ text: "Command-line tools and automation, including AI agents and MCP servers.",
+ },
+ {
+ title: "Web3 frontends and systems",
+ text: "Wallet flows, dashboards and WebSockets, backed by a Rust and Solidity background.",
+ },
+];
+
+export const WhatIDo: React.FC = () => (
+
+
+
+
+ {OFFERS.map((offer) => (
+
+
+ {offer.title}
+
+
+ {offer.text}
+
+
+ ))}
+
+
+ Not offered: Windows apps, mobile apps, running your infrastructure.
+