Build Guide
How to Build a Portfolio Website
A portfolio built from scratch tells hiring managers more about your skills in 10 seconds than a resume does in 10 minutes.
Building your own portfolio is the highest-ROI project for any developer: immediately useful, permanently visible, and it forces you to learn deployment, performance optimisation, and responsive design.
Data model
The core tables you'll need before writing any UI.
Build order
The sequence that minimises rewrites — build in this order.
Hero section
Build the first-fold content: your name, one-line role description ("Full-stack developer building AI tools"), a short bio (2–3 sentences), and two CTAs — "View My Work" (scrolls to projects) and "Contact Me".
Projects grid
Create a projects array in a data file. Render a 2-3 column grid of project cards with: cover image, title, 2-line description, tech stack tags, and links to live demo + GitHub.
About section
Write 3–4 paragraphs covering: who you are, what you build, what you've done professionally, and what you're currently learning. Add a skills grid and a downloadable CV button.
Contact form
Add a contact form with name, email, and message. Use Resend to send yourself an email on submission. Show a success message after sending. Add honeypot field for spam protection.
SEO and metadata
Set a title ("Your Name — Full-Stack Developer"), meta description, og:image (a 1200×630 branded card generated with @vercel/og), and canonical URL. Add JSON-LD Person schema.
Performance
Run Lighthouse. Common issues: images not using next/image, fonts loaded via <link> instead of next/font, unused CSS from a component library. Fix each until you hit 90+ on all metrics.
Dark mode
Use next-themes. Add a toggle button to the header. Store the preference in localStorage. The page should respect the user's OS preference on first load (prefers-color-scheme).
Build it with AI — Architect Prompt
Paste this into Claude, Cursor, Windsurf, or any AI coding tool. It includes the full context of this guide — data model, build order, and pitfalls — so the AI starts with everything it needs.
<context>
App: Portfolio Website
Difficulty: Beginner
Estimated build time: 1–3 days
Data model:
Project: slug, title, description, tech_stack[], live_url, github_url, cover_image, featured, order
WorkExperience: company, role, start_date, end_date, description, logo_url
Recommended build order:
1. Hero section — Build the first-fold content: your name, one-line role description ("Full-stack developer building AI tools"), a short bio (2–3 sentences), and two CTAs — "View My Work" (scrolls to projects) and "Contact Me".
2. Projects grid — Create a projects array in a data file. Render a 2-3 column grid of project cards with: cover image, title, 2-line description, tech stack tags, and links to live demo + GitHub.
3. About section — Write 3–4 paragraphs covering: who you are, what you build, what you've done professionally, and what you're currently learning. Add a skills grid and a downloadable CV button.
4. Contact form — Add a contact form with name, email, and message. Use Resend to send yourself an email on submission. Show a success message after sending. Add honeypot field for spam protection.
5. SEO and metadata — Set a title ("Your Name — Full-Stack Developer"), meta description, og:image (a 1200×630 branded card generated with @vercel/og), and canonical URL. Add JSON-LD Person schema.
6. Performance — Run Lighthouse. Common issues: images not using next/image, fonts loaded via <link> instead of next/font, unused CSS from a component library. Fix each until you hit 90+ on all metrics.
7. Dark mode — Use next-themes. Add a toggle button to the header. Store the preference in localStorage. The page should respect the user's OS preference on first load (prefers-color-scheme).
Known pitfalls to avoid:
- Listing every project you've ever touched — quality over quantity. 4 strong projects with live demos beat 12 CRUD apps with no demos. Be ruthless: if you wouldn't demo it in an interview, cut it.
- Forgetting mobile — most hiring managers browse on desktop but some check on mobile. Test at 375px width. Your project cards should stack to one column, text should be readable without zooming.
- No live demo — "live demo coming soon" is a red flag. If the project is important enough to show, deploy it. Vercel and Railway both have free tiers. A working link is worth 10× a screenshot.
Tech stack (intermediate): Next.js + Framer Motion + Sanity CMS — animated transitions and CMS-managed content
</context>
<role>
You are a Senior Full-Stack Engineer and product architect who has shipped production Portfolio Websites before. You know exactly where developers get stuck and how to structure the project to avoid rewrites.
</role>
<task id="step-1-clarify">
Before writing any code or spec, ask me 3–5 clarifying questions that will meaningfully change the architecture. Focus on: scale expectations, auth requirements, platform (web / mobile / both), must-have vs nice-to-have features for the MVP, and any hard constraints (budget, deadline, existing infrastructure).
<example>
BAD: "What tech stack do you want to use?" — too broad, doesn't change architecture decisions.
GOOD: "Do you need real-time sync across devices, or is single-device with periodic refresh acceptable? This decides whether we use WebSockets or simple REST polling and significantly affects infrastructure complexity."
</example>
</task>
<task id="step-2-architect">
After I answer your questions, generate a complete project specification including:
1. Final tech stack with version numbers
2. Full file and folder structure
3. Complete database schema — every table, column, type, index, and foreign key
4. All API routes with request/response shapes and auth requirements
5. Component tree with TypeScript props interfaces
6. Auth and authorisation flow (who can do what)
7. Step-by-step implementation plan in the exact build order from <context> above
8. All environment variables with descriptions
<self_check>
Before presenting the spec, verify:
□ Every answer I gave in step 1 is reflected in the spec
□ The database schema matches the data model in <context>
□ The implementation plan follows the build order from <context>
□ No circular dependencies in the component tree
□ Auth is wired up before any protected routes are built
□ All known pitfalls from <context> are addressed in the spec
</self_check>
</task>
<task id="step-2.5-agents-md">
Generate an AGENTS.md file at the project root. This file is read automatically by Claude Code, Cursor, Windsurf, Sourcegraph Cody, and all major AI coding tools at the start of every session.
Include:
- Project overview (2–3 sentences)
- Tech stack with version numbers
- Folder structure with one-line descriptions
- Key architectural decisions and why they were made
- Coding conventions: naming (camelCase components, kebab-case files), max 200 lines per file, one concern per file
- Available commands: dev, build, test, lint, db:migrate, db:seed
Note in the file: "Cursor users can symlink .cursorrules → AGENTS.md. Claude Code users can symlink CLAUDE.md → AGENTS.md."
</task>
<task id="step-3-implement">
Implement the full project following the spec from step 2, in the exact order defined. For each step:
- Write the complete code (no placeholders or TODOs)
- Confirm the step is working before moving to the next
- Note any deviations from the spec with an explanation
<constraints>
- Max 200 lines per file. WHY: every file must fit in one AI context window for easy review and editing.
- One concern per file. WHY: mixing auth logic into API routes makes it impossible to reuse — extract to lib/auth.ts.
- TypeScript strict mode, no `any` types. WHY: catches data shape mismatches at compile time, not in production at 2am.
- All database queries in server components or API routes only. WHY: keeps credentials server-side, prevents accidental client-side exposure.
- All environment variables documented in .env.example. WHY: the next developer (or your future self) should be able to set up the project in under 5 minutes.
- Comment every non-obvious decision. WHY: AI tools read your comments to understand intent — without them, the next edit will break the pattern you established.
</constraints>
</task>How to use this prompt
- 1.Copy the prompt above
- 2.Open Claude, Cursor (Cmd+L), or Windsurf
- 3.Paste the prompt and send — the AI will ask 3–5 clarifying questions
- 4.Answer the questions, then it generates your full project spec
- 5.Continue in the same session to implement step by step
Common mistakes
What trips up most developers building this for the first time.
Listing every project you've ever touched — quality over quantity. 4 strong projects with live demos beat 12 CRUD apps with no demos. Be ruthless: if you wouldn't demo it in an interview, cut it.
Forgetting mobile — most hiring managers browse on desktop but some check on mobile. Test at 375px width. Your project cards should stack to one column, text should be readable without zooming.
No live demo — "live demo coming soon" is a red flag. If the project is important enough to show, deploy it. Vercel and Railway both have free tiers. A working link is worth 10× a screenshot.
Recommended tech stack
Pick the level that matches your experience.
Next.js + Tailwind CSS + Vercel — free hosting, instant deploys, great performance defaults
Next.js + Framer Motion + Sanity CMS — animated transitions and CMS-managed content
Next.js + Three.js or React Three Fiber + GSAP — 3D and animation-heavy portfolio
Take it further — related ideas
Each comes with revenue math, a full build guide, and a prompt to paste into Claude or Cursor.
5 ideas in the archive
PitchParse - NLP Engine That Extracts Investable Signals from Founder Update Emails
Investors drown in weekly founder update emails and extract key metrics manually into spreadsheets like it's 2008. PitchParse is an NLP pipeline that ingests raw founder update emails, extracts MRR, churn, burn rate, headcount delta, and sentiment signals, and outputs a structured JSON dashboard per portfolio company — automatically. No more copy-pasting revenue numbers from Gmail.
ResumeGlow - Real-Time ATS Optimization Without Generic Advice
Paste your resume, get instant feedback on which exact sentences kill ATS parsing, watch a live score climb as you edit, no buzzword spam. Targets freelancers and job seekers tired of 'add more keywords' nonsense.
TermsGuard - AI Contract Analyzer for Freelancers and Small Biz (One-Click Red Flags)
Paste a contract, get instant AI red flags, plain-English summaries, and negotiation suggestions tailored to your industry and risk profile. No lawyer required for first-pass screening.
ResumeScale - Invisible Resume Optimization That Beats ATS and Lands Interviews
Upload your resume and a job description. AI rewrites your resume to match the role's keywords and values without lying, then shows you a match score and the exact changes made.
AI Resume Optimizer with ATS Score
Upload your resume and get instant AI feedback on ATS compatibility, keyword optimization, and formatting improvements with a detailed score. Get hired faster by beating applicant tracking systems.