Portfolio Projects for Backend Developer

Career TipsJobRise Team9 min read

Your backend portfolio is full of tutorial clones, and interviewers skip past them in under a minute. Certificates prove you sat through a course. Projects prove you can build, decide, and explain. Three well-built projects beat ten completed Udemy tracks, and this piece covers which three, how to present them, and how to talk about them without sounding like a readme.

What reviewers actually look for#

A reviewer, whether a hiring manager or a senior engineer, is asking three questions. Did this person make real decisions? Is the code organized the way production code is organized? Can they explain tradeoffs? Everything else is decoration.

They also look for the boring stuff. Tests. Error handling. A README that tells me how to run it in under two minutes. A schema that looks like someone thought about it. Missing migrations tell me more than a fancy diagram ever will.

Most reviewers spend 30 to 90 seconds on a repo before deciding to dig in or move on. The README is doing most of that work. If I see "npm install, npm start" with no mention of the database or environment variables, I close the tab.

Get the next guide by email

New guides and fresh jobs in one short email. Free.

Unsubscribe in one click.

Project one: a real API with auth and background work#

Build an API that does one domain well, with authentication, rate limiting, and at least one background job. Examples: a booking API with confirmation emails, an expense tracker with monthly report generation, a link shortener with click analytics.

The background job is what separates this from a bootcamp project. Real backends push slow work out of the request path. Sending email, generating PDFs, resizing images, calling third-party APIs. Pick one and wire it up with a queue.

Use Postgres. Add migrations. Write integration tests against the real database, not mocks. That combination alone puts you ahead of most applicants at the junior and mid level.

Here is how the resume bullet changes when you describe decisions instead of features:

  • Weak: "Built a REST API for a booking application using Node.js and MongoDB."
  • Stronger: "Built a booking API in Node and Postgres with JWT auth, Stripe webhooks, and a Redis queue for confirmation emails. Wrote 40 integration tests. Cut p95 booking response from 1.2s to 180ms by moving email off the request path."

The second one names the queue, the trigger, the test count, and a number. Numbers do not need to be dramatic. "Reduced from 1.2s to 180ms" is fine. If you do not have a number, say what changed and why.

Project two: a data pipeline you can defend#

Take a messy public dataset and build something that ingests, cleans, stores, and serves it. City transit feeds, public spending records, weather archives. Add a scheduled job that pulls new data nightly and a small query endpoint or dashboard on top.

The value here is showing you can handle data that fights back. Duplicate records, changing formats, missing fields, rate-limited sources. Write down the problems in the README. Reviewers love seeing "the source returns inconsistent date formats, so ingestion normalizes to UTC and rejects unparseable rows into a dead-letter table."

Include a small observability layer. Structured logs, a health endpoint, and a metric or two like rows ingested or last successful run. That reads like someone who has been on call, even if they have not.

Project three: a service you had to debug#

Take one of the first two projects and break it on purpose. Add a slow query. Introduce a race condition in the booking flow. Fill the disk with logs. Then document how you found and fixed each one.

This is the project that wins interviews. Anyone can write features. Fewer people can describe a bug hunt with a timeline, a hypothesis, and a fix. Keep the writeup short: what broke, how you noticed, what you tried, what worked, what you changed to stop it happening again.

If you have access to a cloud free tier, deploy it. A small VM or container on a free tier is enough. Say so in the README and include the architecture in three lines. Deployment is optional, but it answers the "can they ship?" question before anyone asks.

How to present them on GitHub#

Pin the three projects. Delete or archive the rest. A profile with 40 half-finished repos reads worse than a profile with three good ones.

Each repo needs the same skeleton so a reviewer knows where to look:

  • One paragraph at the top saying what it does and what problem it solves
  • A screenshot or short screen recording of it running
  • Stack and versions, including the database and any queue
  • How to run it locally in under five commands, including how to start the database
  • How to run the tests, and roughly how many there are
  • Two or three decisions you made and why, in a "Design notes" section
  • Known limitations or what you would do next

Commit history matters more than people think. Small, named commits over a few weeks beat one giant dump on a Sunday. If you rebuilt the project for the portfolio, say so. Do not fake timestamps.

Before you publish, run the repo through an ATS checker if you plan to paste descriptions into application forms. And if you are matching a job posting, a free JD decoder helps you see which keywords the posting actually cares about so your README and resume use the same language.

How to present them on a resume#

Two lines per project, maximum. Line one is what and the stack. Line two is the decision and the outcome. Put the projects above certificates, always.

Work them into the experience section if you can. If you are between jobs or coming from another field, a "Projects" section right after a short summary is fine. Keep the summary to two lines and skip the soft-skill adjectives.

Match the wording to the posting. If the role says "event-driven" and you used a queue, say "event-driven" in your bullet. Browse live backend postings to see how teams describe the work right now, and mirror that phrasing honestly. Do not claim skills you cannot defend in a screen.

Mistakes that make projects look like tutorials#

The tell is not the topic. It is the shape. A to-do app with real auth, tests, and a considered schema looks better than a "microservices e-commerce platform" with no tests and a README copied from a course.

Common tells to avoid:

  • Following a course build exactly, same folder names, same example data
  • No tests at all, or only one test that asserts true
  • Secrets committed to the repo, even fake ones with real-looking keys
  • README that is just the default create-react-app text plus a title
  • All commits in one day with messages like "final" or "update"
  • Error handling that is a single catch block returning 500
  • A schema with no indexes and no foreign keys
  • Stacks chosen because they sound impressive, not because they fit

If you did follow a tutorial, that is fine. Fork it, then change the domain, add a feature the tutorial did not cover, and write your own README. The delta is what you get credit for.

How to talk about them in interviews#

Interviewers want the story behind the code. Lead with the problem, then your options, then your pick, then the result. Keep it to 60 to 90 seconds per project.

A worked example for the booking API question, "tell me about a project you are proud of":

"I built a booking API in Node and Postgres. The first version sent confirmation emails inline, and a slow email provider pushed booking responses past a second. I moved email onto a Redis queue with a worker, added retry with backoff, and wrote integration tests around the booking flow. p95 response dropped to about 180ms. The tradeoff is that confirmations are now eventually consistent, so the API returns a booking ID immediately and the client polls or gets a webhook."

That answer names a problem, a fix, a number, and a tradeoff. If you have no number, replace it with a qualitative change and be honest about it. Do not invent metrics. Interviewers ask follow-ups, and invented numbers fall apart fast.

Prepare three follow-ups per project. What would you change at 10x the traffic? What broke in testing? What did you read to solve the hard part? Have real answers. If the honest answer is "I would add caching but I have not measured where the bottleneck is," say that. It lands better than a confident guess.

Free tools#

FAQ#

How many projects should a backend portfolio have?

Three is the sweet spot. One strong API, one data-heavy project, and one debugging writeup covers most of what reviewers check. More than five and you dilute the signal.

Do personal projects count if I have no work experience?

Yes, and for junior roles they often carry more weight than unrelated job history. Treat them like real work: scope, deadlines, tests, and a written summary of what you did.

Should I deploy my projects?

It helps but it is not required. If you deploy, use a free or cheap tier, keep the cost obvious in the README, and clean up resources after. Reviewers care more about the code than the URL.

What if my project is based on a tutorial?

Change the domain, add a feature the tutorial did not cover, and rewrite the README in your own words. Then describe what you changed and why in your interview. The delta is what gets credit.

How do I talk about a project that did not work out?

Say what you tried, what failed, and what you learned. Interviewers respect a clear failure more than a vague success. Keep it short and move to what you would do differently now.

Send this to whoever has the interview this week.