Blogscribe is a clone of the popular blogging platform Medium. This repository contains the API for Blogscribe.
- 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/benidevo/blogscribe.git
-
Navigate to the project directory::
cd blogscribe
-
Build the Docker containers and start the application:
make build
-
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