/django-roadmap

A complete roadmap for learning django backend

Django Roadmap:


Part 1 (Development Basics):

  • Python virtual environment (pipenv, virtualenv, pyenv)

  • Effective Python Book

  • VCS (Version Control System): Git and Github (commits, branches, merges, conflicts, stashing, pull requests)

  • IDE/Text Editor: Pycharm Pro or VS Code (shortcuts, formatting, integrations, plugins)

  • Networks Basics: IPs, Ports, HTTP/HTTPS, FTP, Webservers, NATs, SSH, ...etc

  • Linux

  • Using The Terminal/CMD/PowerShell

Part 2 (Databases)

  • RDB (PostgreSQL, MySQL/MariaDB, SQLite)
  • NoSQL (MongoDB, Redis)
  • ORM (Object-Relational Mapper)

Part 3 (Software Engineering)

  • Conventional Commits
  • Trunk-based Development (https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development)
  • Change Logs
  • README
  • Documentation
  • Clean Code
  • Design Principles (SOLID, KISS, YAGNI, ...etc)
  • Design Patterns
  • Testing (Unit, Integration, Functional)
  • Pytest
  • TDD (Test-Driven Development)
  • BDD (Behavior-Driven Development)
  • DDD (Domain-Driven Design)
  • Issue Tracking (GitHub issues, JIRA, Redmine) Learn how to mention issue number in commit message
  • Continues Integration (GitHub Actions, Jenkins, Travis-CI)
  • pre-commit hooks (black, flake)
  • .env files and environmental variables
  • Logs, and Logging (For Example Sentry)

Part 4 (Web)

  • HTML, CSS, SASS, Javascript, Bootstrap and JQuery
  • REST API
  • Swagger
  • ngrok
  • GraphQL
  • Browser dev tools (elements tab, console, network tab, performance)

Part 5 (Theory and Tools):

  • Security (XSS, SQL Injection, CSRF, CORS, ...etc)
  • Symmetric Encryption and Asymmetric Encryption
  • SSH (Connecting, Generating Keys, Adding Hosts, ...etc)
  • Authentication (session, basic, token and jwt token)
  • Docker, docker-compose
  • Postman
  • Authentication vs Authorization

Part 6 (Django)

  • Good Resources:

    • Two-Scoops with Django
    • Code With Mosh - Ultimate Django Series
    • Documentation
  • Django App Architecture and Organization

  • Important Packages

    • django-split-settings (https://sobolevn.me/2017/04/managing-djangos-settings)
    • django-allauth (social auth)
    • django-rest-auth (for drf)
    • django-braces (mixins)
    • django-compressor (for static files)
    • django-countries (country fields)
    • django-crispy-forms (render forms)
    • django-db-mailer
    • django-el-pagination
    • django-extensions (shell_plus, jobs, ...etc)
    • drf-extra-fields (Base64Fields)
    • django-filters
    • django-fsm (state machine)
    • django-jet (admin styles and template)
    • django-modeltranslation
    • django-newsletter
    • django-phonenumber-field
    • django-push-notifications
    • django-solo
    • django-treebeard
    • PyJWT
    • django-redis
    • django-wkhtmltopdf
    • django-import-export
    • sentry-sdk
    • django-ckeditor
    • geopy (locating)
    • django-rest-knox (auth)
    • drf-spectacular (swagger)
    • easy-thumbnails
    • django-oscar
    • django-oscar-api
    • django-oscar-invoices
    • django-debug-toolbar
    • pytest-django
    • pytest-cov
  • custom management commands

  • custom migrations

  • permissions

  • Django cookie-cutter

  • Django Rest Framework

  • Wagtail

  • Django cms

Part 7 (Advanced Concepts & Devops & Production):

  • Elastic Stack
  • Caching with redis
  • Asynchronous programming (celery, rabbit mq, django rq, Kafka)
  • Linux cron jobs
  • AWS Basics (S3, EC2, Networks)
  • Gunicorn
  • Nginx
  • Microservices
  • Hosting (PAAS, SAAS, IAAS)
  • System Design (a good book is System Design Interview - An Insider's Guide)

Part 8 (Front-End Optional Miscellaneous)

  • NPM
  • Webpack
  • SPA (Vue and Nuxt.js/React and Next.js/Angular)
  • PWA
  • TypeScript
  • ...etc