Stack
Personal Portfolio
A portfolio site with a contact form, hosted forever for the price of a domain.
Why this stack
Cloudflare Pages or GitHub Pages hosts the static site. Resend powers the contact form (3,000 emails/mo is more than any portfolio will ever use). Cloudflare Web Analytics tells you which projects people actually click on, without cookies.
The trade-off vs. a full Next.js + Vercel setup is that you give up server-side rendering and API routes — but for a portfolio you don't need them. Static + a single email-sending edge function (or Resend's REST API called directly from the form) is all the dynamism a portfolio needs.
Build order
Services in this stack
Numbered in the order they should be set up — earlier items are usually dependencies for later ones.
Cloudflare Pages
Static + Workers hosting on Cloudflare's edge with unmetered bandwidth.
Unlimited bandwidth, 500 builds/mo, unlimited sites, Workers 100k req/day
Hosting2026-05GitHub Pages
Free static hosting straight from your repo — zero config for docs sites.
100 GB bandwidth/mo soft limit, 1 GB site size, 10 builds/hour
Hosting2026-05- Top pick
Resend
Developer-first transactional email with React Email components.
3k emails/mo, 100/day, 1 verified domain
Email2026-05 Cloudflare Web Analytics
Free, privacy-friendly pageview analytics — unmetered.
Unlimited pageviews, unlimited sites, no event tracking
Analytics2026-05