Why we built starmerx.io as a static site
An engineering team's public site should be like our code: simple, readable, easy to deploy. Zero server-side, zero cookies, deployed to the CDN edge.
An engineering team’s public site should be like our code: simple, readable, easy to deploy.
TL;DR
starmerx.io is a purely static site. Built with Astro, hosted on Cloudflare Pages—zero server-side, zero cookies.
Why? Because:
- We’re not building a product, we’re building a shop window.
- Static = cheapest, fastest, easiest to maintain.
- We write thousands of lines of business code daily; our spare time shouldn’t be eaten by site operations.
What we didn’t do
- ❌ No database
- ❌ No API
- ❌ No cookie consent banner
- ❌ No comment system
- ❌ No Google Analytics (Cloudflare Web Analytics is cookieless and far more compliance-friendly)
What we did
pnpm install
pnpm dev # local preview
pnpm build # output to dist/
# → Cloudflare Pages automatically builds from git
The entire publishing pipeline is two steps: write MDX, git push. CI runs astro build automatically and ships to the edge.
Why Astro, not Next
- Zero JS by default (most pages don’t need interactivity)
- MDX is first-class
- Content Collections + Zod schema auto-validate frontmatter
- Fast builds (hundreds of pages in hundreds of milliseconds)
We’ve written internal admin tools with Next, where RSC / Server Actions fit nicely. But for a public-facing, content-driven site, Astro is the obvious right choice.
A counterintuitive point
“What about interactivity on a static site?”
Add JS. Astro’s client:* directives let you slot in React/Vue/Svelte/preact/raw wherever you actually need it.
We only ship JS in two places:
- Theme toggle (~30 lines)
- Hero shader (~60 lines + GLSL)
Everything else is plain HTML + CSS.
Our public stack
| Layer | Choice | Reason |
|---|---|---|
| Framework | Astro 4 | Static + MDX + zero JS by default |
| Styling | Tailwind | Fast, constrained, easy to rip out and rewrite |
| Deployment | Cloudflare Pages | Global edge, generous free tier |
| Search | Pagefind | Index built at build time, fully static |
| Hero | ogl + GLSL | 20KB WebGL, no LCP impact |
In closing:
We like to publish the stack we use and the traps we’ve hit. This
blogs/section will keep getting updated.