Hello, DEV!
Source: Dev.to
I’m Mat, a Solutions Architect who thinks in systems, writes about intentional living, and recently shipped my personal site: matbanik.info.
This is my first DEV post, so I figured I’d share the stack and lessons from building it. Maybe it’ll help someone starting their own portfolio.
Stack
| Layer | Choice |
|---|---|
| Framework | Astro |
| Hosting | Cloudflare Pages |
| Backend | Cloudflare Workers |
| Bot Protection | Cloudflare Turnstile |
| Analytics | Cloudflare Web Analytics |
| Newsletter | Buttondown (via Workers) |
| Resend (via Workers) | |
| Search | Pagefind |
Total hosting cost: $0 /month
I evaluated Next.js, Hugo, and 11ty before landing on Astro. Here’s why:
- Content Collections — Type‑safe Markdown with Zod schemas. My blog posts validate at build time.
- Zero JS by default — Ships HTML/CSS only. JavaScript is opt‑in per component.
- File‑based i18n — I just duplicate pages under
/es/for Spanish. No complex routing config. - Island Architecture — Interactive components hydrate independently (though I barely needed this).
What I’d Do Differently
- Start with Pagefind earlier — client‑side search is a great UX addition.
- Use CSS Custom Properties from day one — makes theming and dark mode trivial.
- Set up CSP in report‑only mode first — I’m still validating before enforcing.