Skip to content

Capstone Project

Build a complete API from scratch, applying everything from the course. Focus on getting something working and deployed rather than building every possible feature.

Before starting the capstone, confirm you have completed all of the following. If any item is missing, complete it first.

Requirement Where to find it
Minimal API endpoints (CRUD) Week 1–2
PostgreSQL with EF Core and migrations Week 3–4
One-to-many relationships Week 3–4
Data Annotations on entity classes Week 5 (mandatory core)
Structured validation error responses Week 5 extension or Extension page
Pagination on list endpoints Week 5 extension or Extension page
JWT authentication (register/login) Week 6
At least 5 passing integration tests Week 7
docker-compose up runs the full stack Week 8
Section titled “Option 1: Blog API (recommended — simplest)”

Users write posts. Other users leave comments.

Users create projects and track tasks inside them.

Users create recipes and list their ingredients.

Project Entity 1 Entity 2 Entity 3
Blog Users Posts Comments
Task Tracker Users Projects Tasks
Recipe App Users Recipes Ingredients

Relationships: Users → main entity → child entity (two one-to-many relationships).

  • User registration and login
  • CRUD on the main entity (Posts / Projects / Recipes)
  • Read child entities (Comments / Tasks / Ingredients)
  • Protected endpoints for create, update, and delete
  • Public endpoints for reading
  • Input validation with field-level error messages on all write endpoints
  • Pagination on all list endpoints
  • Runs with docker-compose up
  • At least 5 passing integration tests
  • Data persists in PostgreSQL
  • Swagger endpoint descriptions
  • Simple search or filter on the main entity
  • README with setup instructions
  • Advanced features (likes, tags, assignments, priorities)
  • Complex business rules
  • High test coverage
  • Performance optimization
  1. Plan your 3 entities and sketch the relationships on paper
  2. Set up a new project, Dockerfile, and docker-compose.yml first
  3. Create entities and run migrations
  4. Build public read endpoints and test them in Swagger
  5. Add authentication (register/login)
  6. Build protected write endpoints
  7. Add validation to all inputs
  8. Write 5–10 integration tests
  9. Add Swagger endpoint descriptions
  10. Write README.md with instructions for running the project
Users: Id, Username, Email, PasswordHash
Posts: Id, Title, Content, UserId, CreatedAt
Comments: Id, Content, PostId, UserId, CreatedAt
POST /auth/register public
POST /auth/login public
GET /posts public, paginated
GET /posts/{id} public, includes comments
POST /posts protected
PUT /posts/{id} protected
DELETE /posts/{id} protected
POST /posts/{id}/comments protected

“Help me plan a [Blog / Task Tracker / Recipe] API. Give me a simple database schema with 3 entities, the essential endpoints with HTTP methods, and which endpoints need authentication. Keep it achievable for a student.”

  • 50% getting the API working
  • 30% Docker and deployment
  • 20% tests and documentation
Requirement Done?
Can register and login
Can create and read the main entity
Protected endpoints reject unauthenticated requests
Write endpoints return field-level validation errors
List endpoints support pagination
Data persists in PostgreSQL
docker-compose up starts everything
5+ passing integration tests
README explains how to run it

Week 8: Docker | Back to Overview | Advanced Topics