Aurora
Aurora is a SaaS landing page: home, pricing, changelog, blog and docs, plus a waitlist, a demo booking page and landing pages built from sections.
Aurora comes in two variants, chosen when you create the site: files/Sanity (static, any host)
and EmDash (--cms emdash, rendered on request on Cloudflare). The pages
and sections are the same in both.
Pages and their content
Section titled “Pages and their content”| Page | Edit it in |
|---|---|
| Home, landing pages | Pages → Home page / Landing pages (a list of sections) |
| Pricing (plans, FAQ, comparison table) | Pages → Pricing page |
| Blog, changelog, docs | Blog, Content → Changelog / Docs |
| Waitlist, demo, checkout success, 404 | Pages → the page’s own entry |
| Privacy, terms | Pages → Legal |
| Navigation, footer, call to action | Pages → Site settings |
| Buttons, labels, emails, chat texts | Content → Interface texts |
FAQ questions live on the pricing page; each one picks whether it shows on the home page, the pricing page or both.
Prices are whole numbers in the pricing page’s currency (currency, e.g. USD, EUR or GBP); the
plan cards, search results and structured data all use it.
Languages
Section titled “Languages”Aurora is ready for more languages: see Languages. The search index, the AI chat’s knowledge and emails use the default language.
AI assistants and search engines
Section titled “AI assistants and search engines”AGENTS.mddescribes the project for coding assistants (Claude Code reads it throughCLAUDE.md, Cursor through.cursor/rules/). Keep it in step when you change how the site is built./llms.txtlists your pages, docs and posts for AI assistants. It is generated from the content; add a line insrc/pages/llms.txt.tswhen you add a page of your own.- Pages carry JSON-LD: the site on the home page, your plans and FAQ on the pricing page, posts and docs articles. Blog posts also share their cover as the social preview image.
The blog lists four posts per page: /blog, then /blog/page/2 and so on.
Sections
Section titled “Sections”Home and landing pages are built from these sections, in any order: Hero (full-width photo), Product (photo and features), Steps, Story (photo and quote), Testimonials, Pricing plans, FAQ and Closing call to action (with the waitlist form).
src/content/singletons/brand.json (Pages → Brand in Keystatic) sets the accent and secondary
colors, corner radius, button shape and fonts. Every other shade is derived from the two
colors and checked for readable contrast in both themes; a color that can’t be made readable
stops the build with a message.
Commands
Section titled “Commands”pnpm dev # local site, editor at /keystaticpnpm build # production buildpnpm cms sanity schema|seed # move content to Sanity (see Content → Sanity)pnpm search:sync # push the search index to Algolia, if you use itIn the EmDash variant: npm run dev, npm run deploy (Cloudflare) and npm run emdash:schema
(after changing the content model).