The short version
- A strong developer portfolio has four parts: a short hero that says what you build, three to six project cards, a brief about section and an easy way to get in touch.
- A hero background made from layered CSS gradients loads instantly and shows visual taste without a heavy image.
- Each project card should state the problem, what you built and the result, with links to the live project and the code.
- A 1200×630 Open Graph image makes your portfolio link look finished when it is shared in applications, chats and social posts.
- Fewer, better explained projects make a stronger portfolio than a long grid of tutorials.
On this page
A good developer portfolio is a small, fast site with four parts: a hero that says in one line what you build, three to six project cards that explain the problem and your part in solving it, a short about section, and a contact link. Taste shows in the details: a calm hero background, consistent cards, readable type and a link preview that looks finished when a recruiter pastes your URL into a hiring channel. You don't need a framework showcase. You need a page that is obviously cared for.
The structure of a developer portfolio
Keep it to
Keep it to
Keep it to
What it does
Keep it to
Keep it to
Say what you build, not what you are. "I build fast checkout flows for online shops" tells a reader more than "Full stack developer". If you are early in your career, "I build accessible web apps with React and Postgres" is honest and specific. Hero section design has more on writing that first line.
A hero background that shows taste
Many portfolios either use a flat white page or a heavy animated background that delays everything else. A middle path is a layered CSS gradient: two or three soft radial blooms over a dark or pale ground. It is a few lines of code, has no network cost and still looks considered. Website hero background and CSS mesh gradient go further.
radial-gradient(ellipse at 20% 15%, #3b2a8f 0%, #0e1020 55%, #07080f 100%).hero {
min-height: 70vh;
color: #f4f4f8;
background:
radial-gradient(ellipse 60% 50% at 80% 10%, rgb(56 189 248 / 0.28), transparent 70%),
radial-gradient(ellipse 50% 60% at 15% 20%, rgb(124 58 237 / 0.45), transparent 70%),
linear-gradient(180deg, #0e1020 0%, #07080f 100%);
}
.hero h1 {
font-size: clamp(2.25rem, 5vw, 4rem);
line-height: 1.05;
max-width: 18ch;
}If you want motion, animate slowly, keep the words still and respect prefers-reduced-motion; reduced motion explains how. A little grain on top hides banding on large dark gradients, covered in CSS noise texture.
Project cards that explain impact
A project card has seconds to justify a click. Give each one the same four parts: a title, a one sentence problem, what you built and the outcome, then links to the live project and the code. Outcomes don't need to be dramatic. "Used by our 30 person team every day" or "Cut page load from 4 s to 1.2 s" are fine when they are true and yours.
Weak card
- "Weather App" with a screenshot
- A list of eight technologies
- No idea what you personally did
- A dead demo link
Strong card
- "Rota: shift swaps for a café team"
- The problem in one sentence
- Your part and one measurable result
- Working live link and a tidy repository
.projects {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr));
gap: 1.5rem;
}
.card {
border-radius: 1rem;
padding: 1.5rem;
background: linear-gradient(160deg, #161a2e 0%, #0f1222 100%);
border: 1px solid rgb(255 255 255 / 0.08);
}
.card img {
aspect-ratio: 16 / 10;
width: 100%;
object-fit: cover;
border-radius: 0.5rem;
}Screenshots look more finished when they sit on the same background. Place each one on your hero ground with a little padding rather than showing raw browser captures of different sizes.
Open Graph images for your portfolio
Your portfolio link will be pasted into job applications, recruiter messages, Slack channels and social posts. Each of those shows the Open Graph image, 1200×630 pixels. A blank card or a cropped screenshot undoes the care you put into the site. Make one for the home page and, if you have project pages, one per project in the same layout. Dynamic OG images shows how to generate them at build time; Open Graph image size covers the crops.
The home page preview: name and the one line, nothing else.
A project page preview in the same layout and background.
Writing the about and contact sections
Keep the about section to a short paragraph in the first person: what you enjoy building, how you like to work, and what you are looking for next. A sentence about life outside code is fine; a full biography is not. End the page with one obvious way to reach you, usually an email address written out in full, plus GitHub and LinkedIn. A contact form adds friction for a recruiter who just wants to copy your address into a message. If you are applying for design minded roles, personal branding helps you keep the site, CV and profiles in one look.
Small details that read as taste
- One typeface family, two weights. A good sans for everything, a monospace for code only.
- A measure of 60 to 75 characters for body text, so paragraphs are comfortable to read.
- Real contrast: body text should pass WCAG AA against its background.
- A favicon that matches the hero colours.
- Fast load: a portfolio for a developer that takes four seconds to appear makes its own argument.
- A dark and light theme only if you will maintain both properly.
If you'd rather not draw the preview images and screenshot frames by hand, Gradiently can make them on a Mark, a living gradient background that keeps your words readable, and with Pro resize one design to the link preview, a LinkedIn post and an X header in one step. It can also be connected to ChatGPT and Claude, so you can ask for a set of project previews while you write the case studies.
Questions people ask
What should a developer portfolio include?
A one line hero about what you build, three to six project cards with problem, solution and result, a short about section and contact links. Link to live projects and their code.
How many projects should be in a developer portfolio?
Three to six well explained projects are stronger than a long grid. Choose work that shows the kind of job you want next.
What size should a portfolio Open Graph image be?
1200×630 pixels. Keep the name and the one line description in the centre so nothing is cropped in square previews.
Should a developer portfolio have an animated background?
Only if it is subtle, does not delay the page and respects reduced motion settings. A layered CSS gradient gives the same polish at almost no performance cost.
Written by Gradiently
The team behind Gradiently, a design tool built around Marks: living gradients that make everything you design look like yours.
See our profile