Skip to content
WebDev Path

Admin dashboard

Build an admin dashboard with a sidebar, stats cards, a searchable table and a detail page, using data from a mock API.

  • React
  • Tailwind CSS
  • React Router

The project for module 3, React. It proves: components, state, routing and data fetching in react.

Who it's for

  • As an admin, I see key numbers at a glance
  • As an admin, I can search, sort and open any record
  • As an admin, I can switch pages without a full reload

Pick your version

Choose one theme, or your own idea. Same skills, but your portfolio won't look like everyone else's.

  1. Option A

    Online store admin: products, orders and customers

  2. Option B

    Gym admin: members, plans and check-ins

  3. Option C

    Clinic admin: patients, appointments and doctors (made-up data only)

Warm up first

Two short builds that practise the skills this project needs. About 3.5 hours in total.

Product filter

1.5 h

Show products from DummyJSON and filter them by category and price.

  1. Fetch products in a useEffect with a loading state
  2. Add a category select and a max-price slider
  3. Work out the filtered list from state instead of storing it twice
  4. Show a message when nothing matches

Done when: Changing either filter updates the list instantly with no extra requests.

  • useState
  • useEffect
  • Derived state

Multi-step sign-up form

2 h

A 3-step form (account, profile, review) that keeps answers between steps.

  1. Keep all answers in one state object in the parent
  2. Show one step component at a time with Back and Next
  3. Validate each step before moving on
  4. Show a review step with every answer and a Submit button

Done when: Going back never loses an answer, and Next is blocked until the step is valid.

  • Lifting state up
  • Controlled inputs
  • Validation

Build plan

7 steps in order. Each one ends with a clear check, so you always know when to move on.

  1. Set up the shell

    Create a React app with Vite, add Tailwind and React Router, and build the sidebar layout.

    Done when: Clicking sidebar links changes the page without a reload, and an unknown URL shows your 404 page.

    Stuck? Show a hint

    Put the sidebar in a layout route and render pages with <Outlet />.

  2. Fetch real-looking data

    Load products or users from DummyJSON into the table page.

    Done when: The table shows 30 rows from the API, with a loading state.

    Stuck? Show a hint

    Write one small fetch helper and reuse it, so loading and error handling live in one place.

  3. Search and sort

    Add a search box and clickable column headers that sort the table.

    Done when: Searching and sorting work together, and the URL keeps the search term.

    Stuck? Show a hint

    Keep the search term in the URL with useSearchParams so a refresh or shared link keeps it.

  4. Detail page

    Make each row open a detail page at /products/:id.

    Done when: Opening a detail URL directly in a new tab works.

    Stuck? Show a hint

    Read the id with useParams and fetch that one item.

  5. Stats cards

    Show 4 numbers at the top of the home page, worked out from the data.

    Done when: The numbers change if the data changes.

    Stuck? Show a hint

    Calculate stats from the data with reduce instead of typing them in.

  6. Polish and clean up

    Extract repeated UI into components and fix every console warning.

    Done when: The console is clean and no component is longer than about 150 lines.

    Stuck? Show a hint

    The usual warning is a missing key prop in a list. Use the item's id, not the index.

  7. Ship it

    Deploy on Vercel and record a 30-second screen recording for the README.

    Done when: The live link and the recording are in the README.

    Stuck? Show a hint

    On Vercel, add a rewrite so refreshing /products/5 doesn't show a 404.

Requirements

Tick each one when it's done. Saved to your account.

Go further

Optional. One of these makes your project stand out from the tutorial version.

  • Charts for the stats
  • Dark mode saved per user

Starter kit

Free APIs, tools and docs for this project.

Submit

Tick the 5 remaining requirements to submit.