Become a Backend Engineer, one phase at a time.
A no-fluff roadmap that takes you from an empty terminal to a live, authenticated API on the real internet. Track your progress, copy the commands, and actually finish.
Ship small, ship often
A tiny endpoint that runs beats a perfect one that lives in your head. Commit every day.
Read the docs, twice
Django's docs are a masterclass. Skim first for the map, then dive deep when you build.
Break things safely
Spin up a throwaway branch. Delete the database. Learn how to un-break it fast.
- How the web works: request → responsedeep
- HTTP verbs & status codes cheat-sheetref
- The terminal: cd, ls, mkdir, catskim
- Install Python 3.12+
- Set up VS Code + Python extension
- Create a GitHub account
- Make your first commit
“Don't rush past the terminal. Ten minutes of muscle memory here saves ten hours later. You've got this.”
- Python data structures (list, dict, set)deep
- Django: MTV pattern explaineddeep
- URLconf & views quick referenceref
- Create a 'quests' app
- Write a hello-world view
- Wire up urls.py
- Render your first template
- Official Django Tutorial↗The polls app, start to finish
- Django Girls Tutorial↗Gentle & friendly intro
- Relational databases & foreign keysdeep
- Django models & field typesdeep
- QuerySet API referenceref
- Migrations: what & whyskim
- Define a Quest model
- Add a ForeignKey to User
- Run migrations
- Query in the Django shell
- Register models in admin
“The ORM feels like magic until it feels like a footgun. Log your queries early — `.query` on any QuerySet shows the SQL it builds.”
- REST principles & resource designdeep
- Django REST Framework serializersdeep
- JWT vs session authdeep
- Permissions & throttlingref
- Install & configure DRF
- Build a ModelSerializer
- Create a ViewSet + router
- Add token authentication
- Test a protected endpoint
- DRF Official Docs↗Serializers, views, routers
- SimpleJWT Guide↗Token auth done right
- Writing tests with pytest-djangodeep
- Environment variables & secretsdeep
- Gunicorn + WhiteNoise basicsskim
- Docker for Django referenceref
- Write tests for one endpoint
- Move secrets to env vars
- Configure static files
- Write a Dockerfile
- Deploy to a live URL
“Deploying the first time is terrifying and then it's just a habit. When it breaks — and it will — read the logs top to bottom. The answer is almost always there.”