A feature-rich, modern blog platform built with Django. This application supports user registration, profile management, post creation, tagging, comments (with threaded replies), likes, bookmarks, and email subscriptions. It is designed for easy deployment and extensibility.
- User: Django’s built-in user model for authentication and authoring content.
- Profile: Extends User with avatar, bio, and a unique slug.
- Post: Blog post with title, content, image, tags, author, likes, bookmarks, and view count.
- Tag: Categorizes posts for easier navigation and filtering.
- Comment: Supports threaded replies, linked to posts and optionally users.
- Subscribe: Stores email subscriptions for blog updates.
- WebsiteMeta: Stores site-wide metadata (title, description, about).
- Each
Profileis linked to oneUser(one-to-one). - Each
Postis authored by aUserand can have multipleTags(many-to-many). - Each
Commentis linked to aPostand can have a parent comment (for replies). - Users can like and bookmark multiple posts (many-to-many).
- User authentication and registration
- User profiles with avatars and bios
- Create, edit, and delete blog posts
- Tagging system for posts
- Commenting system with threaded replies
- Like and bookmark posts
- Email subscription for updates
- Featured posts and view counts
- Admin dashboard for content management
- Responsive UI (see screenshots below)
- Python 3
- Django 4
- SQLite (default, can be swapped for PostgreSQL/MySQL)
- Pillow (image handling)
- Gunicorn (production server)
- Whitenoise (static files)
- AWS S3 (optional, via django-storages & boto3)
- Clone the repository:
git clone <repo-url> cd blogify
- Create and activate a virtual environment:
python -m venv env source env/bin/activate # On Windows: env\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
- Apply migrations:
python manage.py migrate
- Create a superuser (admin):
python manage.py createsuperuser
- Run the development server:
python manage.py runserver
- Access the app:
- Blog: http://127.0.0.1:8000/
- Admin: http://127.0.0.1:8000/admin/
- Register a new user or log in.
- Create and manage your profile.
- Write, edit, and delete blog posts.
- Tag your posts for better discoverability.
- Comment on posts and reply to others.
- Like and bookmark your favorite posts.
- Subscribe with your email for updates.
Below are some screenshots of the application:
| Home Page | Blog Post | Comments |
|---|---|---|
![]() |
![]() |
![]() |
| Admin Dashboard | About Page | Search |
|---|---|---|
![]() |
![]() |
![]() |
| Login | Signup |
|---|---|
![]() |
![]() |
Contributions are welcome! Please open an issue or submit a pull request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/YourFeature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin feature/YourFeature) - Open a pull request
This project is licensed under the MIT License.







