- Python virtual environment (pipenv, virtualenv, pyenv)
- VCS (Version Control System):
- Git and Github (commits, branches, merges, conflicts, stashing, pull requests)
- IDE/Text Editor:
- Pycharm Pro
- VS Code (shortcuts, formatting, integrations, plugins)
- Linux
- Terminal
- CMD
- PowerShell
- RDB (PostgreSQL, MySQL, SQLite)
- NoSQL (MongoDB, Redis)
- ORM (Object-Relational Mapper)
- How internet works generally?
- HTTP protocol
- Request / Response flow
- What is an API / REST API?
- HTTP Verbs
- Status Codes
- What is JSON & Serialization?
- Basic knowledge of Python Programming Language
- Oop concept
- What is a framework and why use a framework at all?
- Install django, django rest framework & virtual environment
- Start django project
- Follow best django project structure
- Settings file
- Creating models
- Class based view Vs Function based view
- Migrations
- Basic APIView & JSON serializing
- Registering view in url dispatcher
- ModelSerializer
- CRUD, Different view types & http verbs
- Different database relations
- Writing models with relations
- CRUD for endpoints with relations
- Using urls file in every django app
- ModelViewSet
- DRF Router & browsable api
- API design principles
- HyperlinkedModelViewSet
- DRF serializers in depth
- Relations
- Nested Serializers
- List Serializers
- Filtering & Paginating results
- Documenting endpoints with OpenAPI / Swagger
- Authentication Vs Authorization
- Different authentication types
- Session Based,
- Token Based
- OAuth2
- What is JWT and how it works
- Djoser setup
- Django_rest_simplejwt package and basic user log in
- Authentication classes & permission classes
- Protected API endpoints
- 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
- Database Indexing (performance)
- Custom User Model
- CORS issues & working with client side applications
- Email Queuing
- Celery
- Django Q
- Celery beat
- Celery execution pools
- Async I/O and it's combination with celery
- WSGI and unix sockets
- NGINX and web servers
- DNS
- Deploy django backend on fresh ubuntu server
- Docker & Containerization
- Docker Compose