Capstone Project Overview
Understand the scope and goals of the Backend Capstone: a complete, deployed, portfolio-ready API.
This is where everything comes together. By the end, you will have built and deployed a complete, production-grade REST API that you can show to hiring managers.
What you'll build: A Task Management API — a project management backend similar to a simplified Linear or Jira. This domain is:- Relatable to any developer
- Complex enough to demonstrate real skills
- Simple enough to complete in a focused sprint
- Full CRUD for users, projects, and tasks
- JWT authentication with refresh tokens
- Role-based access (owner / member / viewer)
- PostgreSQL with SQLAlchemy & Alembic migrations
- Redis caching for expensive queries
- 80%+ test coverage with pytest
- Dockerised with docker-compose
- CI/CD pipeline with GitHub Actions
- Deployed to a VPS with HTTPS
- Clean README with API documentation
Professional engineers follow a process before writing code:
1. Define the scope — What features are in? What's out?
2. Design the data model — What entities exist? How do they relate?
3. Define the API contract — What endpoints, request/response shapes?
4. Set up the project — Repo, CI, local dev environment
5. Build iteratively — Core auth first, then features, then polish
6. Test as you go — Write tests alongside each feature
7. Deploy early — Don't leave deployment to the end
This process prevents the most common mistake: building for weeks, then discovering your data model doesn't support a core feature.
What is the most important thing to do BEFORE writing application code?
- ADefine the data model and API contract — discovering design flaws on paper is cheap; discovering them after building is expensive
- BChoose a cloud provider
- CSet up CI/CD
- DWrite the README
Why deploy early rather than waiting until all features are built?
- ATo catch deployment-specific issues (environment config, secrets, networking) while the codebase is still small and easy to debug
- BBecause the client requires a demo URL immediately
- CBecause Docker only works on deployed servers
- DTo enable CI/CD before tests are written