- How to use Docker with Celery, Redis, Flower with Django REST Framework
- How to use Reverse Proxies with NGINX and NGINX Proxy Manager
- How to Secure an API with HTTPS with SSL Certificates from Letsencrypt
- API testing with Pytest using factories and fixtures
- How to manage multiple Docker containers with Portainer
- How to use shell scripts to automate and monitor processes
- How to implement Asynchronous tasks with Celery and Redis
- How to Serve static and media files with Nginx and Whitenoise.
- How to implement Asynchronous tasks monitoring with Flower
- How to work with Postgres within a Docker container, including how to perform backups using shell scripts.
- How to setup an Ubuntu server, running Django over a Domain name.
- How to use makefiles to make working with Docker easier.
- Searching functionalities using elastic search
- Python Test coverage using coverage
- Logging in Django
- Token Based Authentication
- Working with emails using Mailhog in development and Mailgun in production.
- User registration and authentication
- Creating, editing, and deleting blog posts
- Liking and commenting on blog posts
- Following other users and receiving notifications
- Categorizing blog posts using tags
- Searching for blog posts by keywords or tags
- Pagination and sorting of blog posts
- User profiles with bio and profile picture
- User activity feed
- Email notifications using MailHog
- Asynchronous task processing using Celery and Redis
- Monitoring and management of Celery tasks using Flower
- Containerized deployment using Docker and Docker Compose
- Reverse proxy and load balancing using Nginx
- Python - Programming language
- Django - Web framework
- Django REST framework - Toolkit for building APIs
- PostgreSQL - Relational database management system
- Redis - In-memory data structure store
- Celery - Distributed task queue
- Flower - Monitoring and management tool for Celery
- Docker - Containerization platform
- Docker Compose - Tool for defining and running multi-container Docker applications
- Nginx - Web server and reverse proxy
- Elasticsearch - Distributed search and analytics engine
- MailHog - Email testing tool
Make sure you have the following technologies installed on your machine:
-
Clone the repository:
git clone https://github.com/samsorrahman/Advance-Backend-Blogging-with-DRF.git
-
Navigate to the project directory::
cd src
-
Build the Docker containers and start the application:
make build
Download insomnia and add the api.har file
-
Once the containers are built and the application is running, you can access the following resources:
Documentation: Open your web browser and visit
localhost:8080/redoc
to access the API documentation.Flower (Celery monitoring): Open your web browser and visit
localhost:5555
to access Flower, the monitoring and management tool for Celery tasks.MailHog (Email server): Open your web browser and visit
localhost:8025
to access MailHog, the email testing tool. You can view the email notifications sent by the application here.
The Makefile
in the project contains other useful commands for managing the application. Some of the commonly used commands are:
Make sure to stop the application containers when you are done by running: make down
checkout the requirement folder for dependencies installation.