3 project ideas + a guideHow to build a React portfolio that gets you a job

Johannes KettmannPublished on 

Let's assume you've been learning React and now want to build an advanced portfolio to land a job. But you can't just create any project — you need to impress Hiring Managers, the gatekeepers of your career.

To stand out, act like a professional React developer by using technologies, libraries, techniques, and workflows employed in real-world dev teams. But how can you know all this without prior experience in a company?

Don't worry, I've got you covered. Instead of just giving you project ideas, I'll help you understand how to tailor your projects to impress future employers, whether you choose from the ideas here or come up with your own.

Part 1

React Project Ideas for Your Portfolio

The goal of this guide is to replicate a real work environment. To achieve this, choose an idea that mirrors a real-world production app. A Todo or Weather app won't suffice. A social media app is more complex, but do you really want another one of those?

Ideally, you want a unique portfolio to stand out among other candidates. Find a project with enough complexity to showcase your skills, yet small enough to complete within weeks. Having ready-made designs would let you emulate professional workflows and save time on layout.

This list of React project ideas for your portfolio includes realistic business use cases:

  • a UI kit
  • an error-tracking tool
  • a web analytics app.

UI Kit

A UI kit comprises reusable components like buttons, inputs, cards, and modals. It may not sound exciting, but it's more challenging than you think. Many companies create custom UI libraries, so this project mirrors a professional frontend developer's work.

By building a UI kit, you show your understanding of modern UI development. Polish your styles for various dynamic states and make it versatile for multiple uses. To appear professional, use tools like this Chrome extension and Storybook.

Where to get it: Find a great UI Kit on Figma.

Time required: 1 week

Difficulty: medium


  • static & interactive components
  • various dynamic states

What you'll learn:

  • professional teamwork with designs
  • advanced CSS
  • UI documentation with Storybook

Error Tracking Tool

Error tracking tools like Sentry or Rollbar are used in most software products. They report errors on websites or applications, and users can access this information via a dashboard.

The design above is part of the React Job Simulator. While you can use free dashboard designs, the ProLog project is tailor-made for job seekers looking to enhance their portfolios.

This project showcases your understanding of professional developer tooling.

Where to get it: Find the project on Profy or a free dashboard design here.

Time required: 2 - 4 weeks

Difficulty: advanced


  • data visualization (table & graph)
  • REST API interaction
  • a small UI kit
  • static marketing page based on a CMS

What you'll learn:

  • working with existing codebase
  • professional teamwork with designs & tasks
  • advanced CSS & styled-components
  • data fetching
  • writing tests with Cypress
  • professional Git workflow

Web Analytics Tool

Analytics apps are widely used by businesses, making them a great portfolio project. Instead of a full Google Analytics clone, create a reduced version similar to Plausible.io.

Build a frontend and a JS library, and quickly develop the backend with services like AWS Amplify, Nhost, or [Hasura](https://hasura.io.

Where to get it: While I don't have a complete design you can find a free dashboard design on Figma.

Time required: 3 - 6 weeks

Difficulty: hard


  • separate tracking library or npm package
  • dashboard with chart & table

What you'll learn:

  • building and publishing a JS library (e.g., on npm)
  • sending and fetching data from an API
  • advanced CSS & data visualization
You don't feel "job-ready" yet?
Working on a full-scale production React app is so different from personal projects. Especially without professional experience.
Believe me! I've been there. That's why I created a program that exposes you to
  • a production-grade code base
  • realistic tasks & workflows
  • high-end tooling setup
  • professional designs.
Part 2

How to build your React portfolio projects like a pro

The concept is simple: impress future employers by building your portfolio projects professionally, showcasing your ambition, eagerness to learn, and leveling up as a Junior developer.

However, there's a catch-22: you can't work like a pro without professional team experience. Fortunately, I've been on both sides and want to share my insights with you, focusing on:

  • professional workflow
  • styles
  • application logic
  • Git

Professional workflow

Working on a professional team differs greatly from working alone. Your teammates rely on your output, so you need structure and transparency.

But let's start with a story of a lone developer building a project, like me at the beginning of my career. You might recognize yourself.

I built my first projects with an idea, like an Airbnb for pet owners (I'm serious, it was called Petsnflats). I thought about features like profile creation, updating, and a searchable apartment list view.

Then I dove into coding (after all that's the fun part). But soon I lost focus, chasing new features and leaving behind half-baked code.

Designing the layout was tricky too. I'd look at competitors for inspiration and start writing CSS. I'd fiddle with styles, adjusting pixels and colors, only to realize making a website look good was harder than expected...

The problem? My plan was rough and only in my head. I wasted time on unnecessary features and CSS details, and the awesome web app I envisioned fell short.

In comparison: in a real-world job, it's not the developer's responsibility to come up with features or designs. Product managers decide features, and designers create designs. The developer turns both into code.

On your own projects you can emulate this workflow:

  1. You take designs (e.g. from a free source like the Figma Community) and break them into smaller parts (aka features).
  2. For each feature, you create a task. You can use a free tool like GitHub project management, ClickUp, or simply Trello.
  3. For each task, you collect the requirements. What is the feature supposed to do? How can the user interact with it? Where does the data come from?
  4. If a task gets too big you can break it down into smaller subtasks.


You might be tempted to use a UI library like Material UI or Bootstrap. And you're right, these are great libraries if you need to build an app quickly e.g. for early-stage startups, internal tools, or building websites for clients as a freelancer.

But for most user-facing products a custom branding is essential. And that comes with custom CSS.

Ensure your app is responsive and avoid global classes. Use CSS Modules or styled-components. Here are examples for both:

In case you want to see an example, here you go.

// don't use global classes like this
import "./index.css";
const MyComponent = () => (
// this will become class="box" in the HTML
<div className="box" />
// but rather scoped classes with CSS Modules
import styles from "./Box.module.css";
const MyComponent = () => (
// this will become something like class="Box—box-3MbgH"
<div className={styles.box} />
// or styled-components
import styled from "styled-components";
const Box = styled.div`
background: red;
const MyComponent = () => (
// this will be similar to class="Box—box-3MbgH"
<Box />

Application logic

Application logic (your JS code) distinguishes a website from a web application. That's one of the reasons I'd recommend not to waste a lot of time on a static portfolio website (as do 60+ hiring managers in this survey).

To become a real software developer, you need to prove you can build more than a static website. Real-world applications involve routing, state, and data, which are areas you should showcase your skills in. Additionally, consider automated tests, as they're crucial in many developers' daily work.

  1. Routing: Use the de facto standard React Router. A route with URL parameters is a plus.
  2. State: Dynamic apps rely on state. With GraphQL or React Query, more applications move away from solutions like Redux. Native React hooks useState, useReducer, or useContext should suffice.
  3. Data: Fetch and render data from an API. Ideally, users can trigger requests dynamically (e.g., through filters or forms). Showcase your understanding of data flow, data structuring, and basic JS array functions like map, filter, or reduce.
  4. Tests: Automated tests are vital for serious software products. Senior developers highly value testing, while most Junior developers lack experience. Covering parts of your code with tests can give you an advantage. Try React Testing Library (beginner's guide or Cypress (beginner's guide).

If this isn't enough here's a complete list of the most popular technologies used in production React apps.


As a software developer, collaborating with others is inevitable, and Git is essential for this.

Using Git properly not only benefits your work but also your job prospects. Interviewers like to ask about experience with Git or examine the commit histories of your personal projects.

Imagine a project's Git history with commits like these:

It looks unprofessional.

We all have such commits in personal projects, but for your portfolio, write concise, descriptive commit messages.

This example makes the commit's purpose clear, even if not proper English.

To go further, work on branches and use Pull Requests on GitHub for merging. This demonstrates your understanding of professional development workflows. Check out my free course on a professional Git workflow.


Impress potential employers by:

  • Using designs and tasks for workflows
  • Writing custom, responsive CSS
  • Implementing routing, state management, data fetching, and testing
  • Employing clear Git practices
You don't feel "job-ready" yet?
Working on a full-scale production React app is so different from personal projects. Especially without professional experience.
Believe me! I've been there. That's why I created a program that exposes you to
  • a production-grade code base
  • realistic tasks & workflows
  • high-end tooling setup
  • professional designs.
Part 3

How to present your React portfolio project

Imagine you've built your portfolio project, followed all advice from part 2, and your code quality is good. You're ready for a Junior React position.

You confidently send out job applications, expecting interviews soon. But nothing happens — no replies or interviews, just crickets...

Understanding the hiring process is crucial. Entry-level positions receive countless applications, and those reviewing them (team leads or developers) are busy.

Let's put ourselves in their shoes for a moment.

How a reviewer looks at your project

Imagine you're a developer at a company, tasked with reviewing portfolio projects for a Junior dev position. You're busy, in-between meetings, and need to finish a feature.

Observe yourself:

How do you quickly scan the repository?

This is what happens when I look at this repo:

  1. My eyes quickly scan the folders and files. The folder structure looks pretty standard for a React project.
  2. My eyes land at the bottom, where the README file is. It's unchanged from the create-react-app default, so I dismiss it.
  3. There are nice details in this repositpry, like open issues, pull requests, and branches. But let's face it. I'm in a hurry, so I won't notice any of this.
  4. Next I'd randomly open files, potentially missing impressive code hidden in the file structure. The decision to consider the candidate for the position is left to chance.

How can this be improved?

Use the README file to stand out

Check out this improved version of the same repository:

I only changed the README and the About section. As a reviewer, my eyes are drawn to the README, where I find valuable sections like:

  1. "How I worked on this project": Showcases your workflow and adaptability.
  2. "How to navigate this project": Guides the reviewer to important parts of the application.
  3. "Why I built the project this way": Offers insight into your thought process and technical decisions.
  4. "If I had more time I would change this": Demonstrates self-reflection and teamwork potential.

A well-crafted README not only guides the reviewer but also proves your communication skills, an essential yet rare trait among engineers.


  • The README might be the most important part of your project.
  • It ensures the reviewer sees what's needed.
  • Showcases your communication skills.
  • Makes you appear more professional.

In short: A clean and informative README helps you stand out from other candidates.

You don't feel "job-ready" yet?
Working on a full-scale production React app is so different from personal projects. Especially without professional experience.
Believe me! I've been there. That's why I created a program that exposes you to
  • a production-grade code base
  • realistic tasks & workflows
  • high-end tooling setup
  • professional designs.

Wrapping it up

Here's a concise summary to help you create an outstanding React portfolio project:

  • Ideas: Explore Profy.dev's error tracking app ProLog for professional React development insight.
  • Workflows: Base your code on designs and tasks.
  • Styles: Use custom, responsive CSS, styled-components, or CSS Modules.
  • Logic: Build a stateful, multi-page app that fetches API data. Include automated tests.
  • Git: Craft clear commit messages and use branches and Pull Requests.
  • Presentation: Leverage the README to guide reviewers and highlight important aspects.

With these tips, you're well on your way to creating a standout React portfolio project.