What this stack is for
You have things to say and no reason to run a database to say them. This stack treats writing as files in a repo: every post is a markdown file, every edit is a commit, and the whole site rebuilds and redeploys when you push. There is nothing to patch, nothing to back up, and no CMS login to forget, because there is no server holding state anywhere. The least moving parts of any stack on this site, on purpose.
Components
- Next.js: the site framework, App Router, static + server rendering
- MDX: markdown-plus-components format for posts and pages
- Vercel: hosting, deploys from git, preview URLs per branch
- Resend: sends the contact-form email
How the pieces fit
- Next.js builds every page at build time where possible; posts are MDX files in the repo
- Vercel deploys on every git push and serves the built site from its edge network
- The contact form posts to a serverless function that sends mail through Resend
- An RSS feed route generates XML from the same MDX post collection
- No database: content lives in the repo as files, versioned with everything else
Setup outline
- Create the Next.js app with the App Router and MDX support (full walkthrough coming)
- Write the first few MDX posts and the post-listing page (full walkthrough coming)
- Add the RSS route generated from the MDX collection (full walkthrough coming)
- Add the contact form + Resend API route (full walkthrough coming)
- Import the repo into Vercel and deploy (full walkthrough coming)
What to hand your agent
Hand over the stack and the writing together, and be explicit that content lives in the repo:
- The full stack description above, plus the PRD and any existing content or voice guidelines
- The env-var names the contact form expects
- The instruction to keep all content as MDX files in the repo, not in a CMS, unless asked otherwise
Adaptation notes
- A headless CMS (Sanity, Contentful) can replace MDX-in-repo once non-technical editors need to publish
- Astro is a valid substitute for Next.js when the site is fully static with no server logic
- Resend can be skipped entirely if the contact form just links to a mailto: address