The backend stack is where I spend 80% of development time. Every component is chosen for reliability, ecosystem support, and developer productivity.
Python 3.11-3.12: The core language for everything I build. Python's readability, massive ecosystem, and dominance in AI/ML make it the optimal choice for the types of projects I deliver — web applications, APIs, chatbots, and automation tools. I use type hints throughout for code clarity and early error detection.
Django 5.x: The web framework for all full-stack and API projects. Django's "batteries included" philosophy means authentication, admin panel, ORM, migrations, form handling, and security features are built in. This saves 30-40% of development time compared to assembling the same functionality from micro-frameworks. I use Django for SaaS platforms, web applications, API backends, and admin systems.
Django REST Framework (DRF): The standard library for building REST APIs with Django. Serialisers, viewsets, authentication, pagination, filtering, and throttling — all handled by DRF. Used in every project that exposes an API, which is essentially every project.
Celery + Redis: Asynchronous task processing. Celery handles background jobs — sending emails, processing webhooks, generating reports, running scheduled tasks. Redis serves as both the message broker for Celery and the application cache. This combination handles thousands of background tasks per hour reliably.
Supporting libraries:
- django-environ: Environment variable management for secure configuration
- django-cors-headers: CORS handling for API projects with frontend separation
- django-filter: Declarative filtering for DRF endpoints
- whitenoise: Static file serving for simpler deployments (when Nginx is not used)
- Pillow: Image processing for uploads, thumbnails, and media handling
- requests / httpx: HTTP client for external API integrations