TrademarkTrademark
Ctrl k
Search docs...
Guides
Surfaces

Spotlight

A link-in-bio page with an essay archive and an Aveiro newsletter form.
The spotlight surface is a personal page for one person: a name, a pitch, a newsletter sign-up, the projects they want you to look at, and their latest essays. It requires no slices and runs on zero environment variables. Its files, listed in composition/surfaces/spotlight.json, are src/app/(spotlight) and src/content/spotlight. Essays are read with the shell's getPosts helper, so the surface has no lib directory of its own.
  • /spotlight — the intro page, showing the two most recent essays.
  • /spotlight/writing — every essay, newest first.
  • /spotlight/writing/<slug> — one essay.
It serves /spotlight rather than / because landing owns /. The manifest declares rootRedirect: "/spotlight", so a composition where nothing else serves / sends the first visit there. The page itself comes from src/content/spotlight/spotlight.js:
  • profile — name, headline, subheading, avatar, the readers line, and proof, the images in the avatar group beside it.
  • projects — cards with a title, description, href and image.
Essays are MDX files under src/content/spotlight/writing/. The filename is the slug. They sort by publishedAt. The form posts to an Aveiro embed form. Set NEXT_PUBLIC_AVEIRO_SITE_ID to your site's ID from Audience → Embed in Aveiro, and each address is sent to Aveiro's public subscribe endpoint. The ID is public and needs no secret, so the surface still runs with no environment variables. Without the variable, submitting shows "The newsletter is not configured yet." and nothing is sent. The success toast appears only after Aveiro accepts the address; any error Aveiro returns is shown as is. To use another provider, replace the fetch in subscribe in SpotlightNewsletter.tsx. If that provider needs an API key, call a route handler that holds the key on the server instead of the provider directly.
Last updated October 18, 2026
Edit this page on GitHub