Folitox AI · Guides

By profession

How to build a software developer portfolio that gets read

Which projects a developer portfolio should show, how to write READMEs and project pages, and how to explain technical decisions to non-technical readers.

By the Folitox team · · 6 min read

A developer portfolio has two audiences at once: a recruiter or hiring manager who may not read code, and an engineer who will open your repository and look at the commit history. Most portfolios are written for only one of them. This guide shows how to choose projects, write about them, and link your code so both readers come away with the same impression: this person builds things that work and can explain why they built them that way.

Pick three to five projects, not fifteen

A long grid of tutorial clones tells a reviewer that you finished tutorials. A short list of projects with real decisions in them tells them how you think. Aim for three to five, and choose them on purpose.

Good candidates usually have at least one of these qualities:

  • Someone used it. A tool your team adopted, a script a friend runs every week, a library with a handful of outside users. Real use means real constraints.
  • It solved a problem you can name. "A habit tracker" is a category. "A habit tracker that works offline because I commute on a train with no signal" is a problem.
  • It shows a skill the job asks for. If you're applying for backend roles, a project with a database, authentication and a deployed API matters more than a polished landing page.
  • It contains a decision you can defend. Choosing a queue over a cron job, caching a slow endpoint, rewriting a module after it broke. Decisions are what interviewers ask about.

If most of your work is under NDA or inside a private company codebase, you still have options. You can describe the work without code (more on that below), or build a small public project that recreates the shape of the problem with none of the private details.

Order matters. Put the project that best matches the jobs you're applying for first, even if it isn't your favorite. Many reviewers only open the first one or two.

Write each project page like a short case study

A project card with a title, a screenshot and three technology badges doesn't say much. Give every project a short page or an expanded section that answers five questions:

  1. What is it? One or two sentences a non-developer could understand.
  2. Why did it need to exist? The problem, the user, or the constraint.
  3. What did you build, specifically? Especially on team projects, separate your part from the team's.
  4. What was hard, and how did you handle it? One or two technical decisions, explained.
  5. What happened? Usage, performance changes, what you'd do differently.

For a longer treatment of this structure, see how to write a case study.

Before and after: a project description

Before:

"TaskFlow. A full-stack task manager built with React, Node, PostgreSQL and Docker. Features include authentication, drag-and-drop and real-time updates."

After:

"TaskFlow is a shared to-do board for small volunteer groups that don't want another paid tool. I built it after my running club kept losing track of who was bringing what to events. The tricky part was real-time updates: my first version polled the server every few seconds and the free hosting tier kept throttling it, so I switched to a single WebSocket connection per board and cut the request volume to almost nothing. Around twenty club members use it each month."

The second version names a user, a problem, a decision and an outcome. It also still mentions the stack, just not as the headline.

Make your code easy to judge

If you link a repository, assume someone will spend about a minute in it. Make that minute count.

The README is the front door

A good README answers, in order:

  • What this project does, in one line.
  • A screenshot, short demo description, or link to a live version.
  • How to run it locally, with the exact commands.
  • How it's organized: the main folders and what lives in each.
  • Known limitations and what you'd do next.

That last item helps more than people expect. Writing "Search is a simple text match; with more data I'd move it to a proper full-text index" shows you know where the weak spots are.

Clean up what a stranger will see

Before you link a repo, check a few things:

  • Remove secrets, API keys and personal data, including from old commits.
  • Delete dead code, commented-out experiments and files named final2.
  • Make sure the main branch actually builds and the tests you mention actually pass.
  • Pin or highlight the repositories you want people to see, and archive the ones you don't.

You don't need a perfect commit history, but a few clear commit messages ("Add rate limiting to login endpoint") read far better than forty commits named "fix".

Link each project to its specific repository, not just to your profile page. If there's a live demo, link that too, and say if it sleeps on a free host and takes a few seconds to wake up. A broken demo link is worse than no demo link.

Explain technical decisions to non-technical readers

The person who decides whether you get an interview might be a recruiter or a product manager. They need to understand why a decision mattered without understanding how it works.

A simple pattern: problem in plain words, what you changed, and the effect someone would notice.

  • Technical: "Implemented Redis caching for the product catalog endpoint, reducing p95 latency."
  • Plain: "The product page was slow during busy hours because every visit asked the database for the same list. I stored that list in memory for a few minutes at a time, so pages loaded noticeably faster when traffic peaked."

You can include both. Lead with the plain version, then add a sentence of detail for engineers. They'll read past the first sentence; the recruiter can stop there.

Some phrases that help translate:

  • Instead of "refactored," say what got easier: "reorganized the code so adding a new payment method takes one file instead of six."
  • Instead of "CI/CD pipeline," say "every change is now tested and deployed automatically, so releases went from a monthly event to a routine."
  • Instead of "migrated to TypeScript," say "added type checking, which catches a whole class of bugs before the code runs."

If you have real numbers, use them; quantifying your achievements covers how to do that honestly. If you don't, describe the change in concrete terms rather than inventing a percentage.

Describing work you can't show

Much of a professional developer's best work lives in private repositories. You can still write about it:

  • Describe the system at a high level: "a billing service that handled invoices for a subscription product."
  • Describe your role and the decision you drove, not the proprietary details.
  • Skip client names, internal tool names and anything that would identify the company's architecture if your agreement forbids it.
  • Offer a code sample on request, such as a small open-source project or a take-home you completed.

When in doubt, read your employment agreement or ask. A portfolio that gets you in trouble with a former employer is not worth it.

The rest of the page

Projects are the center, but the surrounding parts still matter.

  • Headline. Specific beats clever. "Backend developer focused on payments and APIs" is more useful than "Code wizard." See writing a portfolio headline.
  • Skills. Group them (languages, frameworks, tools, practices) and list only what you'd be comfortable being asked about in an interview.
  • Experience. A condensed version of your resume, with one or two achievements per role.
  • Contact. A form or a single preferred channel. You don't need to publish your phone number.

Common developer portfolio mistakes

  • Listing every technology you've ever touched.
  • Showcasing only tutorial projects with no changes of your own.
  • Dead demo links and repositories that don't build.
  • Screenshots with no explanation of what the viewer is looking at.
  • Writing only for engineers, so a recruiter can't tell what you're good at.

Putting it together

Choose a few projects with real decisions in them, put the most relevant one first, and give each one a short write-up that a non-developer can follow and an engineer can verify. Clean up the repositories you link, write READMEs that explain how to run and read the code, and translate technical choices into effects people would notice. If you'd rather not build the site from scratch, Folitox can turn your resume into a first draft that you then edit project by project. Either way, the content is what gets read.