Skip to content
This repository has been archived by the owner on Jul 24, 2022. It is now read-only.

Latest commit

 

History

History
114 lines (87 loc) · 2.88 KB

File metadata and controls

114 lines (87 loc) · 2.88 KB

This document assumes you know fundamentals of programming, python and data structures.

Preface:

  1. How internet works generally?
    1. HTTP protocol
    2. Request / Response flow
  2. What is an API / REST API?
  3. HTTP Verbs
  4. Status Codes
  5. What is JSON & Serialization?
  6. How to install linux alongside windows?
  7. What is linux and distributions?
  8. Basic linux commands & package manager fundamentals

Basic Concepts:

  1. What is a database (relational)? (Table, Row, Column)
  2. What is a framework and why use a framework at all?
  3. Install django,django rest framework & virtual environment
  4. Start django project
  5. Django project structure
  6. Settings file
  7. Why using a VCS?
  8. What is git?
  9. Git staging git commit
  10. Creating models
  11. Migrations
  12. Django admin panel
  13. Basic APIView & JSON serializing
  14. Registering view in url dispatcher
  15. Calling API with postman

API In Depth:

  1. ModelSerializer
  2. CRUD, Different view types & http verbs
  3. Different database relations
  4. Writing models with relations
  5. CRUD for endpoints with relations
  6. Using urls.py file in every django app
  7. ModelViewSet
  8. DRF Router & browsable api
  9. .gitignore / ssh key / git push / git pull / origin

API In Depth 2:

  1. API design principles
  2. HyperlinkedModelViewSet
  3. DRF serializers in depth (Relations, Nested Serializers, List Serializers ...)
  4. Git branching / git stash / git merge / git mv / git rm
  5. Filtering & Paginating results
  6. Documenting endpoints with OpenAPI / Swagger
  7. Different DBMS (PostgreSQL, SQLite, MySQL, ...)

User Management System:

  1. Authentication Vs. Authorization
  2. Different authentication types (Session Based, Token Based, OAuth2)
  3. What is JWT and how it works
  4. Django_rest_simplejwt package and basic user log in
  5. Authentication classes & permission classes
  6. Protected API endpoints

Software Testing:

  1. Python unittest package
  2. Python requests package
  3. DRF test framework
  4. Unit Test Vs. Functional Test
  5. APIClient, APITestCase, RequestsClient, APILiveServerTestCase
  6. Python coverage package
  7. Increasing code coverage with more tests

Performance Tuning:

  1. What is caching?
  2. Why should we cache?
  3. What is redis?
  4. Django cacheops cache invalidation
  5. Installing npm & required configs
  6. NPM loadtest package & benchmarking
  7. Lazy Querysets

More Advanced Topics:

  1. Database Indexing (performance)
  2. Custom User Model
  3. CORS issues & working with client side applications
  4. Email Queuing
  5. Celery
  6. RabbitMQ | Message Broker | Queuing systems
  7. Celery beat
  8. Celery execution pools
  9. Async I/O and it's combination with celery
  10. OS Daemons and Celery Daemonization

Some nice to have Operation/DevOps related knowledge:

  1. WSGI and unix sockets
  2. NGINX and web servers
  3. DNS
  4. Deploy django backend on fresh ubuntu server
  5. Docker & Containerization
  6. Docker Compose