Skip to content

Expert · Capstone, portfolio and getting work · topic 31 of 34 · 30 min

Capstone project brief

Explanation

The capstone is one complete app that you plan, build, test and put online by yourself. You can finish the Notes app from this course or build an app of the same size, such as college event booking or a flatmate expense splitter. It must have login, full create, read, update and delete with ownership checks, validation, search, one extra feature, tests, a live HTTPS link and a README. Four weeks is enough if you follow a plan.

What the capstone is

A capstone is the last stone placed on top of a wall. Here it means one finished project that uses everything from this course. Employers and clients trust a working app they can open on their phone far more than a certificate.

Think of it like this: Learning to cook from videos is useful, but you become a cook the day you serve a full thali to guests: dal, sabzi, rice and rotis, all hot at the same time. Separate skills become one meal. The capstone is your full thali: login, database, API, frontend, tests and deployment working together for real users.

Pick your project

Option A is to finish and ship the Notes app you built in this course, with polish and one extra feature. Option B is a new app of the same size. "Same size" means users plus two or three main tables, one owner for each record, and about 6 to 10 API endpoints. Pick a problem that people you know really have, so you can get real feedback.

ProjectMain tablesExtra feature idea
Notes app (Option A)users, notesTags or image attachments
College event bookingusers, events, bookingsSeat limit with a waiting list
Kirana shop billingusers (shop staff), products, bills, bill_itemsDaily sales total and a printable bill
Hostel mess menu and feedbackusers, menu_days, feedbackAverage rating per dish for each week
Expense splitter for flatmatesusers, groups, expenses, sharesA "who owes whom" settlement list

Required features

  • Auth: sign up, log in and log out. Passwords hashed with Argon2id or bcrypt. A session cookie with HttpOnly, Secure and SameSite=Lax.
  • Full CRUD with ownership: CRUD means Create, Read, Update and Delete. Every query filters by the logged-in user, so nobody can read or change another user's records.
  • Validation on both sides: the form shows friendly errors at once, and the server checks the same rules again and answers 400 with the standard error shape.
  • Search: find records by words, for example notes by title or body.
  • At least one extra feature: image attachments, tags, export to CSV, a dark mode that is remembered, or something similar.
  • Tests: a few unit tests and integration tests for the main API routes (including "user B cannot see user A's data"), run by GitHub Actions on every push.
  • Deployed live with HTTPS: a real link that works on a phone, with secrets in environment variables, never in the code.
  • README: what the app does, the live link, screenshots, how to run it locally and the decisions you made.

A 4-week milestone plan

A milestone is a checkpoint with a date and a result you can show. Plan about 1 to 2 hours a day. Each week ends with something that works, not just something "in progress".

WeekWorkWhat you can show at the end
1. Plan and foundationUser stories, MVP list, tables, API contract, repository, signup and loginSign up, log in and log out work on your laptop
2. Core CRUDAll create, read, update and delete routes with ownership checks; screens with loading, empty and error statesA logged-in user can manage only their own records
3. Search, extra feature, testsSearch, the extra feature, unit and integration tests, CI with GitHub ActionsTests pass (green) on every push
4. Ship and polishDeploy with HTTPS, test on a phone, fix bugs found by 3 real users, README, screenshots, 2-minute demo videoA live link you can send to anyone
output
Milestone: Week 2, Core CRUD
[x] POST /api/notes with server validation
[x] GET /api/notes returns only my notes
[ ] PATCH /api/notes/:id checks the owner
[ ] DELETE /api/notes/:id checks the owner
[ ] Notes list: loading, empty and error states
[ ] Note form shows an error under each field
Keep each milestone as a GitHub milestone or a checklist of small items you can finish in one sitting.

Definition of done

A definition of done is a fixed list that every feature must pass before you call it finished. Without it, "almost done" can last for months. Ours: it works on the live site, not only on your laptop; it works on a phone and with the keyboard; the server validates input and checks the owner; it has at least one test and CI is green; errors show a clear message, never a blank screen; and there are no secrets in the code.

How it will be judged

AreaWeight (out of 100)What a reviewer looks for
Works live25The link opens over HTTPS; sign up and the main flows work on a phone
Security and data20Hashed passwords, ownership checks, server validation, no secrets in the repository
Code and tests20Clear structure and names; tests that run in CI
User experience15Loading, empty and error states; mobile layout; labels and keyboard use
README and demo20A stranger can understand, run and judge the project in 5 minutes
Tip: Cut scope, not quality. If week 3 runs late, make the extra feature smaller. Never skip the ownership checks, the server validation or the tests.
Careful: Do not copy a whole project from a tutorial, and do not let an AI tool write it all for you. In interviews you will be asked why you made each choice, and you may be asked to change your code live. Use tools to help, but understand and be able to explain every file.

Watch the lesson

Capstone project brief · 1/7

Capstone = one finished, live app

This is the last module. You will build one complete app and put it online. We call it the capstone.

Prefer a video by a teacher? Find free videos on “full stack capstone project plan build deploy portfolio” on YouTube ↗

In real life: A hostel mess feedback app

A second-year student builds a mess menu and feedback app for her hostel. In week 1 she plans the tables (users, menu_days, feedback) and gets login working. In week 2 students can post one rating and comment per meal, and edit or delete only their own. In week 3 she adds search by dish and a weekly average rating for each dish, with a test that proves one student cannot edit another student's feedback. In week 4 she deploys it, shares the link in the hostel group and fixes the three bugs users report on the first day. In interviews she shows the live app, how many students used it and how she fixed those bugs.

Practice (0/3 done)

Task 1 · Code · Javascript

Your capstone checklist is an array of items like { task: "Login", done: true }. Write progressPercent(checklist) that returns the percent of items that are done, rounded to the nearest whole number with Math.round. An empty checklist returns 0.

Task 2 · Practice

Write the plan for your capstone (the Notes app or one of the other ideas) in a file called PLAN.md in your repository. Check it against the list before you write any code.

Task 3 · Practice

Build and ship your capstone. Before you call it finished, go through this list on the live site (not on your laptop), using a phone for at least half of the checks.

Quick quiz

Question 1

1.Which project is a good size for the capstone?

Question 2

2.What does "full CRUD with ownership" mean?

Question 3

3.Week 3 is running late. What should you cut first?

Question 4

4.What is a definition of done?

Question 5

5.Why must the server validate input when the form already checks it?

Read more (free)

Pass the quiz (60% or more) or mark this topic as done when you are ready.

Your progress is saved on this device only.

← Previous: Testing a full-stack app