Welcome to the Django Blog Application! This is a feature-rich blogging platform built using Django, with various functionalities such as authentication, CRUD operations, post management (publishing, drafting, archiving), commenting, replying, and integration with Celery, Celery Beat, Flower, Redis, and Nginx.
-
Authentication: User authentication is integrated into the application, allowing users to sign up, log in, and manage their profiles.
-
CRUD Operations: Perform Create, Read, Update, and Delete operations on blog posts, allowing users to manage their content efficiently.
-
Post Management:
- Publishing: Users can publish blog posts to make them visible to the public.
- Drafting: Save posts as drafts for later editing and publishing.
- Archiving: Archive posts to keep them accessible while not being actively displayed.
-
Comments and Replies: Engage with readers through comments on blog posts. Users can also reply to comments for interactive discussions.
-
Celery Integration: Asynchronous task processing using Celery for improved performance and scalability.
-
Celery Beat: Schedule periodic tasks with Celery Beat to automate recurring actions, such as publishing scheduled posts.
-
Flower Monitoring: Monitor Celery tasks in real-time with Flower, providing insights into task execution and system health.
-
Redis Integration: Utilize Redis for caching and improving the performance of the application.
-
Nginx Integration: Deploy the application with Nginx as a reverse proxy server for improved security and performance.
Ensure your system meets the following requirements before installing the application:
- Python 3.x
- Django
- Celery
- Redis
- Nginx
- Flower
- Clone the repository:
git clone https://github.com/faresemad/Blog.git
- Build the application:
make build
- Run the application:
make up
- Run the application in detached mode:
make up-detached
The application can be configured by modifying the following files:
-
Configure Django settings in
blog/config/settings/base.py
. -
Configure (Celery / Celery Beat / Flower) settings in
blog/config/celery.py
orblog/compose/django/celery/(beat/flower/worker)
. -
Configure Nginx settings in
blog/compose/nginx/nginx.conf
. -
Configure Django Environment settings in
blog/.envs/.django
. -
Configure Postgres Environment settings in
blog/.envs/.postgres
.
The application is structured as follows:
- `.envs` - Environment variable files for Django and Postgres.
- `apps` - Application-specific files.
- `config` - Settings for the application
- `compose` - Docker Compose configuration files.
- `requirements` - Application requirements files.
- `manage.py` - Django's command-line utility for administrative tasks.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.