Built with EmberKit

This documentation site runs on EmberKit โ€” chosen for speed (HTML-first delivery, minimal client JS on doc pages) and the same stack described in the guides below.

Stack at a glance

PieceHow this site uses it
SpeedSSR sends full HTML per request; MDX pages stay mostly static โ€” fast FCP without hydrating every paragraph
Renderingmode: 'ssr' in apps/docs/emberkit.config.ts โ€” HTML on every doc request in dev and production
Routessrc/routes/**/*.mdx and .tsx under file-based routing
Layoutsrc/routes/_layout.tsx with sidebar + MDX content
InteractivityuseNavigate, signals, and data-ek-bind on the UI showcase โ€” not on every doc page
StylingTailwind 4 via @tailwindcss/vite
Toolingemberkit dev / emberkit build from the monorepo root

For rendering modes (hybrid, static, spa) and build artifacts, see SSR & SSG โ€” the canonical reference.

What we do not duplicate here

The following are documented once elsewhere; this page only points to them:

Doc routes as MDX

Content pages are MDX files compiled by the Vite plugin:

apps/docs/src/routes/docs/
โ”œโ”€โ”€ introduction.mdx
โ”œโ”€โ”€ ssr.mdx
โ”œโ”€โ”€ quick-start.mdx
โ””โ”€โ”€ โ€ฆ

Each file maps to /docs/<name> without a manual route table.

Selective hydration in practice

Most MDX pages are static HTML after SSR. Interactive pieces (homepage CTAs, sidebar navigation, UI component demos) use client handlers or signal bindings. That matches the model in Components: only regions with onClick or data-ek-bind pay for client JS.

Below-the-fold sections use framework LazyInView on the homepage (features, code preview, CTA), the icons grid, and large blocks on the UI reference page so initial paint stays light.

Local development

From the repo root:

pnpm --filter docs dev    # or emberkit dev inside apps/docs

View source on any doc URL โ€” content should appear inside #app before JavaScript runs.

Production build

pnpm --filter docs build
pnpm --filter docs preview   # emberkit preview

Deploy dist/ to your host, or run emberkit serve for SSR/hybrid-style routing. See Edge Deployment for CDN and Workers patterns.

Next steps