-
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
- RDB (PostgreSQL, MySQL/MariaDB, SQLite)
- NoSQL (MongoDB, Redis)
- ORM (Object-Relational Mapper)
- 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)
- HTML, CSS, SASS, Javascript, Bootstrap and JQuery
- REST API
- Swagger
- ngrok
- GraphQL
- Browser dev tools (elements tab, console, network tab, performance)
- 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
-
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
- 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)
- NPM
- Webpack
- SPA (Vue and Nuxt.js/React and Next.js/Angular)
- PWA
- TypeScript
- ...etc