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
| Piece | How this site uses it |
|---|---|
| Speed | SSR sends full HTML per request; MDX pages stay mostly static โ fast FCP without hydrating every paragraph |
| Rendering | mode: 'ssr' in apps/docs/emberkit.config.ts โ HTML on every doc request in dev and production |
| Routes | src/routes/**/*.mdx and .tsx under file-based routing |
| Layout | src/routes/_layout.tsx with sidebar + MDX content |
| Interactivity | useNavigate, signals, and data-ek-bind on the UI showcase โ not on every doc page |
| Styling | Tailwind 4 via @tailwindcss/vite |
| Tooling | emberkit 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:
- Hydration &
data-ek-bindโ Hydration - Signals API โ Signals
- File routes & params โ Routing
<Head>&generateMetaโ Head and SEO & Meta
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
- SSR & SSG โ How builds and pre-rendering work
- Quick Start โ Start your own project
- UI Components โ Live examples of signal hydration