Build a Production-Style REST API (FastAPI, Docker, Tests, CI)
Track: Backend / APIs
Junior backend candidates all say “I know Python.” The ones who get hired show a REST API that looks like it belongs in production — validated inputs, a real database, tests, a Dockerfile, and CI that runs on every push. None of that is hard; most tutorials just skip it. This project doesn’t.
What you’ll build: a FastAPI REST service with typed request/response models, a database with migrations, automated tests, a Dockerfile, and a CI pipeline that runs the tests. The domain is up to you (a bookmarks API, a tasks API, a small store) — the engineering practices are the point.
It shows engineering maturity, not just syntax. An API with validation, tests, containerization, and CI signals you can be trusted with real services. It maps to the keywords backend roles list: Python, FastAPI, REST API, PostgreSQL, pytest, Docker, CI/CD, OpenAPI.
Skills & keywords you’ll demonstrate
FastAPI + Pydantic models & validation
A database (PostgreSQL or SQLite) with migrations
Automated tests with pytest
Docker & docker-compose
CI (GitHub Actions) running tests on every push
Starter repo
Clone github.com/OptimalMatch/resume-project-fastapi-api — app layout, a test folder, a Dockerfile stub, and a CI workflow stub, plus a milestone checklist. Build it under your own account, committing per milestone.
Build it in milestones
Endpoints + models. Define your resource with Pydantic models and CRUD routes; let FastAPI generate the OpenAPI docs. Commit.
Database. Swap in-memory storage for a real database with a migration. Commit.
Validation & errors. Return proper status codes and structured error responses for bad input and missing records. Commit.
Tests. Write pytest tests covering the happy path and the error cases. Commit.
Docker. Add a Dockerfile and docker-compose (API + database) so it runs with one command. Commit.
CI. Add a GitHub Actions workflow that installs deps and runs the tests on every push. Commit — and screenshot the green check for your README.
Stretch goals
Authentication (API keys or JWT) on write endpoints.
Pagination, filtering, and rate limiting.
Test coverage reporting and a coverage badge.
Put it on your résumé
“Built a production-style REST API in Python/FastAPI with Pydantic validation, a PostgreSQL backend, and auto-generated OpenAPI docs.”
“Added a pytest suite, a Docker/compose setup, and a GitHub Actions CI pipeline that runs tests on every push.”
Update your résumé and check it with the free ATS resume score — backend roles weight exactly these keywords.
Frequently asked questions
Why FastAPI for a junior backend project? FastAPI is widely used, easy to start with, and forces good habits — typed request/response models, automatic OpenAPI docs, and async. It lets a junior demonstrate API design, validation, testing, and containerization in one focused project.
What makes it "production-style"? Not the scale — the practices: input validation, a real database with migrations, automated tests, a Dockerfile, and a CI pipeline that runs the tests on every push. Those are exactly what hiring managers look for.