Lesson 2 of 16 intermediate

Building Portfolio Projects That Impress

Stop building TODO apps — build projects that make hiring managers say 'we need this person'

Open interactive version (quiz + challenge)

Real-world analogy

Building another TODO app for your portfolio is like a chef applying to a restaurant with a boiled egg as their sample dish. Sure, it's food — but it doesn't prove you can handle a real kitchen. You need to show you can cook a full meal under pressure.

What is it?

Portfolio projects are the proof that you can actually build software. They bridge the gap between 'I know React' and 'I've built and shipped a React application with authentication, real-time updates, CI/CD, and 85% test coverage.' The right 2-3 projects can outweigh years of listed experience.

Real-world relevance

A junior developer built a GitHub Action that auto-labels PRs based on file paths changed. It got 500+ stars and was featured in GitHub's marketplace. Three companies reached out with interview offers — not because of her resume, but because they found her project while searching for GitHub Actions. The project demonstrated real engineering: tests, semantic versioning, automated releases, and clear documentation.

Key points

Code example

# Project Structure Template for Portfolio Projects
\`\`\`
my-impressive-project/
├── .github/
│   ├── workflows/
│   │   ├── ci.yml              # Run tests + lint on every PR
│   │   └── deploy.yml          # Auto-deploy on merge to main
│   └── PULL_REQUEST_TEMPLATE.md
├── src/
│   ├── modules/             # Feature-based organization
│   ├── shared/              # Shared utilities, types
│   └── config/              # Environment configuration
├── tests/
│   ├── unit/
│   ├── integration/
│   └── e2e/
├── docs/
│   ├── architecture.md      # Architecture decisions
│   └── api.md               # API documentation
├── README.md                # The star of the show
├── .env.example             # Never commit .env!
├── docker-compose.yml       # Easy local setup
└── Makefile                 # Common commands
\`\`\`

# GitHub Actions CI Workflow (.github/workflows/ci.yml)
\`\`\`yaml
name: CI Pipeline
on:
  pull_request:
    branches: [main]
  push:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: 'npm'
      - run: npm ci
      - run: npm run lint
      - run: npm run test -- --coverage
      - run: npm run build
\`\`\`

Line-by-line walkthrough

  1. 1. The folder structure shows professional organization — features in modules/, shared code separated, config isolated
  2. 2. .github/workflows/ contains CI/CD — this runs automatically on every pull request
  3. 3. tests/ split by type: unit (fast, isolated), integration (API tests), e2e (full user flows)
  4. 4. docs/ folder shows you think about maintainability and team collaboration
  5. 5. .env.example provides setup instructions without exposing secrets
  6. 6. docker-compose.yml means anyone can run your project with one command
  7. 7. The CI workflow: checkout code, setup Node, install deps, lint, test with coverage, then build
  8. 8. Using actions/checkout@v4 and setup-node@v4 — always pin to specific versions for reproducibility

Spot the bug

# My Portfolio Project
## Setup
npm install
npm start

## Features
- Login
- Dashboard
- Settings

Tech: React, Node, MongoDB
Need a hint?
This README is missing at least 6 critical elements that make a project look professional. What are they?
Show answer
Missing: (1) Problem statement — what does this solve? (2) Screenshots or demo GIF. (3) Architecture explanation. (4) Tech stack justification — WHY these technologies? (5) Test instructions and coverage info. (6) Deployment/live URL. (7) Environment setup (.env.example). (8) What you'd improve section. The features list is vague — 'Login' tells nothing about the implementation.

Explain like I'm 5

Imagine you want to join a soccer team. You could say 'I know all the rules of soccer!' But the coach wants to see you PLAY. A portfolio project is you playing the game — dribbling, passing, scoring — so the coach (hiring manager) can see you're ready for the real team.

Fun fact

According to Stack Overflow's Developer Survey, 76% of hiring managers say they look at candidates' GitHub profiles or portfolio projects. Projects with live demos get 5x more engagement from recruiters than repos with just code.

Hands-on challenge

Pick one project idea that solves a real problem you've encountered. Create the repo with the folder structure from this lesson. Write the README first (problem statement, planned architecture, tech stack with justifications). Set up a CI workflow that runs on PRs. You don't need to build the full app yet — just ship the skeleton with tests for one core module.

More resources

Open interactive version (quiz + challenge) ← Back to course: Career Launchpad