All posts
Updated on Published on

Hosting my Next.js portfolio on Cloudflare Workers

How itsrobin.in runs on OpenNext and Cloudflare Workers: fast edge delivery, one deploy pipeline, and no always-on Node server.

Paying for an always-on server for a personal portfolio never sat right with me. Most of the site is static. A few routes pull from a CMS. The contact form fires off an email. That's it.

I still wanted it to feel fast everywhere, without me SSH-ing into a VPS on a random Tuesday.

Cloudflare Workers kept showing up in conversations. The awkward part: this isn't a tiny edge script. It's a full Next.js App Router app. OpenNext for Cloudflare is what made that workable.

What's actually running

Same Next.js codebase locally and in prod. OpenNext turns the build into something Workers can run. Neon holds CMS data (projects, blogs, profile). Cloudinary for images. Wrangler for deploys.

I run two Workers from one repo: staging and production. Push to staging, click around on the preview domain, promote when I'm happy.

What got better

Pages that can be cached, stay cached. Dynamic stuff hits Neon only when it needs to. For a portfolio-plus-CMS site, that feels snappy.

Ops got simpler too. Deploy is basically npm run deploy. Secrets live in Worker env, not in git. I don't patch a server box at midnight.

There's a nice side effect: fast load times and stable uptime. Google won't rank you because you picked Cloudflare, but real people notice when a page opens instantly.

The honest trade-offs

Not every Next.js feature maps cleanly to Workers. I read the OpenNext docs before assuming things would "just work." Some Node APIs need a different approach or a polyfill.

Neon's serverless driver is fine for CMS traffic. If this turned into a high-write app, I'd rethink that piece.

If you're weighing the same move

For a portfolio or small marketing site in 2026, Workers plus OpenNext is a strong default. Keep Postgres for anything you'd edit from a CMS. Keep the public surface mostly static or ISR-friendly.

This site is my portfolio and my lab. If you're curious about the setup, say hi.