Skip to content

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.

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.

Aurora is ready for more languages: see Languages. The search index, the AI chat’s knowledge and emails use the default language.

  • AGENTS.md describes the project for coding assistants (Claude Code reads it through CLAUDE.md, Cursor through .cursor/rules/). Keep it in step when you change how the site is built.
  • /llms.txt lists your pages, docs and posts for AI assistants. It is generated from the content; add a line in src/pages/llms.txt.ts when 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.

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.

Terminal window
pnpm dev # local site, editor at /keystatic
pnpm build # production build
pnpm cms sanity schema|seed # move content to Sanity (see Content → Sanity)
pnpm search:sync # push the search index to Algolia, if you use it

In the EmDash variant: npm run dev, npm run deploy (Cloudflare) and npm run emdash:schema (after changing the content model).