
I Built a Full-Stack AI App on Cloudflare Workers With D1, Durable Objects, and Queues — Here's What Actually Worked
Nobody should need to know HTML to have a web portfolio in 2026. That was the pitch I told myself. The reality is I wanted to see if I could build a production app using only Cloudflare services — D1, R2, Queues, Durable Objects, Workers — without reaching for Supabase or Postgres or any external dependency. clickfolio.me is the result: upload a PDF resume, AI parses it, you get a customizable web portfolio with a public URL. Simple pitch. The architecture behind it? Less simple. The Stack Before I get into the interesting parts, here's what powers the app: Next.js 16 (App Router) via OpenNext on Cloudflare Workers D1 (Cloudflare's SQLite) with Drizzle ORM R2 for PDF storage (direct bindings, no S3 SDK) Cloudflare Queues for async AI parsing (+ dead letter queue) Durable Objects with WebSocket Hibernation for real-time status Better Auth for Google OAuth + email/password Gemini 2.5 Flash Lite for resume parsing via service-bound utility workers Resend for password reset emails If you'v
Continue reading on Dev.to Webdev
Opens in a new tab




