A small content service: users, posts, comments, tags. Django + Ninja + Postgres.
Prereqs:
localhost:5432 with a database called backend_devops_interview accessible to postgres/postgres. (Local install, brew install postgresql@16, host-mode docker, whatever you have.)Steps:
mise install
uv sync
createdb backend_devops_interview # or however you create it
uv run python manage.py migrate
uv run python manage.py seed
uv run python manage.py runserver
API docs at http://localhost:8000/api/docs.
Seeding writes ~100k posts and ~500k comments. Expect a few minutes.
| Method | Path | Description |
|---|---|---|
| GET | /api/posts |
Published posts, newest first |
| GET | /api/posts/search?q= |
Full-text-ish search across title and body |
| GET | /api/posts/by-tag/{slug} |
Posts carrying a given tag |
| GET | /api/posts/{id} |
Post detail with comments |
| POST | /api/posts |
Create a post |
| POST | /api/posts/{id}/comments |
Add a comment to a post |
| GET | /api/users/{id} |
User profile with post and comment counts |
| GET | /api/users/find?email= |
Look up a user by email |
We want to see how you take a working prototype and turn it into something a team can develop on and operate. Pick the changes that give the strongest signal about how you'd improve this codebase if you owned it. There are three areas we care about:
Depth beats breadth. Pick 2–3 things and go deep rather than touching ten things shallowly. Write a short NOTES.md covering:
NOTES.md, great — but no need to implement anything.Soft cap of 2–6 hours, depending on your experience and what tooling you have available (AI agents are fine — say so in NOTES.md and include chat transcripts). We're looking at signal, not hours.
Whatever's easy for you to share: a GitHub link, a gitfront link, a git bundle, even git format-patch. Please don't open a PR against this repo.