2026-04-20 · 6 min read
How to Launch a Developer Portfolio in One Afternoon
Most developer portfolios die in a create-next-app. You spend four days configuring dark mode, fighting hydration errors, and renaming things in tailwind.config.ts — and the actual writing-about-your-projects part never happens.
The fix is to invert the order. Start from a template where the hard design decisions are already made, replace only the content that's about you, and deploy in the same afternoon. This is the literal four-step playbook — no build system, no bundler, no framework knowledge required.
1. Pick a template (10 minutes)
For a portfolio specifically, the selection criteria are narrow:
- Work experience section: a timeline or a company-logo grid that signals credibility at a glance.
- Project cards: a clean way to show 3-6 things you've built, each with a link, description, and ideally a screenshot.
- Contact affordance: an email button, a booking link, or a brief form — not a sprawling multi-step contact page.
- Dark mode: recruiters and hiring managers visit portfolios at night far more than you'd expect; dark-first reads as more considered.
Forge is the portfolio template we built for exactly this set of constraints. Glass morphism frames on project cards, a contribution graph as visual texture, a fixed navbar that stays readable over hero imagery, and an email-first contact that pre-fills a subject line. $79, one-time.
If you want more sections to remix — say you're positioning for design engineering roles where the portfolio itself is part of the audition — Orbit has more visual range at $199.
2. Customize three sections (2 hours)
The temptation is to rewrite everything. Resist it. Three changes move 80% of the needle:
Hero copy
Replace the placeholder hero text with a single specific sentence: who you are, what you build, and for whom. Not "Full-stack developer passionate about clean code." Instead: "I build distributed systems for fintech teams that outgrew monoliths. Last three roles: Stripe, Plaid, Ramp."
The specificity is load-bearing. Anyone can claim passion; nobody can fake "Stripe, Plaid, Ramp" without recruiters being able to verify it in under 30 seconds.
Project cards
Pick three — three, not six — projects that reinforce the hero claim. Each card gets:
- A one-line role description ("Led the migration from MongoDB to Postgres over 9 months for a 120-engineer team")
- One metric ("p99 query latency dropped from 800ms to 80ms")
- A link to either the live product, the GitHub repo, or a case-study writeup
If the work is NDA'd, write a sanitized version — "Fortune-500 retailer" instead of the client name, preserved metric, changed dollar amounts by ±15% rounded. Recruiters understand the convention.
Work history timeline
Include only the last 3-4 roles. Each gets the company, the title, the date range, and one concrete thing you shipped. Skip the bullet lists of responsibilities — those are resume content, not portfolio content.
3. Deploy to Cloudflare Pages (20 minutes)
Cloudflare Pages is free for static sites and deploys in under a minute per push. Install wrangler once, then:
npm install -g wrangler npx wrangler login cd ~/Downloads/forge npx wrangler pages deploy . --project-name portfolio
You'll get a URL like portfolio.pages.dev immediately. Open it in a real browser (not just a preview) and click through every link — fixing a broken link now is 30 seconds; fixing it after a recruiter emails about it is embarrassing.
4. Custom domain (30 minutes)
A portfolio at yourname.com is read differently from one at yourname.pages.dev. If you don't own the domain yet, buy it at Cloudflare Registrar (no markup, no renewal hikes) or Porkbun.
Add the domain to your Cloudflare account, then in the Pages project → Custom Domains → add yourname.com. Cloudflare creates the CNAME automatically if the domain is on your account; otherwise you'll get a target to paste into your registrar's DNS panel. Cert issues within 2-10 minutes.
Add a www subdomain too — some people type it, others don't; not owning both breaks for the half that do.
The rest
That's the afternoon. The remaining improvements — case-study writeups, blog posts, speaking page, talks embed — all work better once the baseline portfolio is live, because now you have somewhere to link them to.
Common traps to skip:
- Custom animations on scroll. They read as "I was showing off" rather than "I was solving a problem." Use the template's built-in motion, no more.
- A testimonials section. Unless you have 3+ real quotes from senior people at recognizable companies, leave it out. Two half-quotes from college friends is worse than zero.
- "Currently learning Rust / writing a compiler / building a side project". Either it's shipped and goes in projects, or it's distraction.
Ship the portfolio with three real projects, a working contact link, and a clean domain. Iterate in public.
Start with Forge or browse the full template catalog.