---
import MarketingLayout from "../layouts/MarketingLayout.astro";
import Hero from "../components/Hero.astro";
import FAQ from "../components/FAQ.astro";
import CTA from "../components/CTA.astro";
import { getCollection, type CollectionEntry } from "astro:content";
import {
FeatureTabs,
StackMarquee,
Credibility,
LighthouseScores,
} from "../components/landing/index";
import { t } from "../i18n/ui";
const stackEntries = (await getCollection("stack"))
.sort(
(a: CollectionEntry<"stack">, b: CollectionEntry<"stack">) =>
a.data.order - b.data.order,
)
.map((entry: CollectionEntry<"stack">) => entry.data);
const locale = (Astro.currentLocale || "en") as "en";
const tabs = [
{
id: "performance",
icon: "zap",
heading: "Performance",
description:
"A lightweight, static-first stack that ships minimal JavaScript and renders from Cloudflare's edge network.",
points: [
"Static-first rendering by default",
"Zero-JS islands architecture",
"Edge delivery with smart caching",
],
visual: "$ npm run build\n✓ 25 pages built in 6.4s\n→ Deployed to the edge",
},
{
id: "content",
icon: "pen-line",
heading: "Content",
description:
"Author in Markdown with a Git-based workflow. Blog, docs, and services are type-safe content collections.",
points: [
"Type-safe Markdown collections",
"Versioned and reviewed in Git",
"Blog, docs, and service pages",
],
visual:
"src/content/\n├─ blog/\n├─ docs/\n├─ services/\n└─ pages/",
},
{
id: "growth",
icon: "trending-up",
heading: "Growth",
description:
"Everything search engines and social platforms need is generated for you on every build.",
points: [
"Sitemap, RSS, and robots.txt",
"Canonical URLs and JSON-LD",
"Dynamic Open Graph images",
],
visual:
"\n\n