This document assumes you know fundamentals of programming, python and data structures.
Preface:
- How internet works generally?
- HTTP protocol
- Request / Response flow
- What is an API / REST API?
- HTTP Verbs
- Status Codes
- What is JSON & Serialization?
- How to install linux alongside windows?
- What is linux and distributions?
- Basic linux commands & package manager fundamentals
Basic Concepts:
- What is a database (relational)? (Table, Row, Column)
- What is a framework and why use a framework at all?
- Install django,django rest framework & virtual environment
- Start django project
- Django project structure
- Settings file
- Why using a VCS?
- What is git?
- Git staging git commit
- Creating models
- Migrations
- Django admin panel
- Basic APIView & JSON serializing
- Registering view in url dispatcher
- Calling API with postman
API In Depth:
- ModelSerializer
- CRUD, Different view types & http verbs
- Different database relations
- Writing models with relations
- CRUD for endpoints with relations
- Using urls.py file in every django app
- ModelViewSet
- DRF Router & browsable api
- .gitignore / ssh key / git push / git pull / origin
API In Depth 2:
- API design principles
- HyperlinkedModelViewSet
- DRF serializers in depth (Relations, Nested Serializers, List Serializers ...)
- Git branching / git stash / git merge / git mv / git rm
- Filtering & Paginating results
- Documenting endpoints with OpenAPI / Swagger
- Different DBMS (PostgreSQL, SQLite, MySQL, ...)
User Management System:
- Authentication Vs. Authorization
- Different authentication types (Session Based, Token Based, OAuth2)
- What is JWT and how it works
- Django_rest_simplejwt package and basic user log in
- Authentication classes & permission classes
- Protected API endpoints
Software Testing:
- Python unittest package
- Python requests package
- DRF test framework
- Unit Test Vs. Functional Test
- APIClient, APITestCase, RequestsClient, APILiveServerTestCase
- Python coverage package
- Increasing code coverage with more tests
Performance Tuning:
- What is caching?
- Why should we cache?
- What is redis?
- Django cacheops cache invalidation
- Installing npm & required configs
- NPM loadtest package & benchmarking
- Lazy Querysets
More Advanced Topics:
- Database Indexing (performance)
- Custom User Model
- CORS issues & working with client side applications
- Email Queuing
- Celery
- RabbitMQ | Message Broker | Queuing systems
- Celery beat
- Celery execution pools
- Async I/O and it's combination with celery
- OS Daemons and Celery Daemonization
Some nice to have Operation/DevOps related knowledge:
- WSGI and unix sockets
- NGINX and web servers
- DNS
- Deploy django backend on fresh ubuntu server
- Docker & Containerization
- Docker Compose