A fully-featured, production-ready blog platform built with Django 5.2, designed for speed, scalability, and simplicity.
Deployed seamlessly on Render, using AWS S3 for media storage and WhiteNoise for static files.

- 📰 Dynamic Blog Management — Create, edit, and delete posts from the admin panel.
- 🔑 User Authentication — Secure login, signup, and logout.
- 📱 Responsive UI — Optimized for desktop, tablet, and mobile.
- ☁ Cloud Storage — Media files stored on AWS S3.
- ⚡ Fast Static File Delivery — Served via WhiteNoise in production.
- 🔒 Secure Configuration — Environment variables handled with
python-decouple. - 🛠 Production Ready — Configured with Gunicorn for deployment.
Backend: Django 5.2, Python 3.12
Database: SQLite (development) / PostgreSQL (production-ready)
Cloud Storage: AWS S3 with django-storages
Static Serving: WhiteNoise
Image Processing: Pillow
Deployment: Render
git clone https://github.com/yourusername/your-blog-repo.git
cd your-blog-repo
python -m venv venv
source venv/bin/activate # Mac/Linux
venv\Scripts\activate # Windows
pip install -r requirements.txt
DEBUG=True
SECRET_KEY=your_secret_key
ALLOWED_HOSTS=localhost,127.0.0.1
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_STORAGE_BUCKET_NAME=your_bucket_name
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
Your blog is now live at http://127.0.0.1:8000/ 🎉
Render runs these steps automatically:
pip install -r requirements.txt
python manage.py migrate && gunicorn Blog.wsgi:application --bind 0.0.0.0:$PORT
-
Static files served with WhiteNoise
-
Media files stored on AWS S3
Blog/ │── blog/ # Main app with models, views, templates │── Blog/ # Project settings, URLs, WSGI │── static/ # Static assets │── templates/ # HTML templates │── manage.py # Django CLI entry point │── requirements.txt # Python dependencies │── .env # Environment variables (not committed)
- Fork this repository
- Create a new branch: git checkout -b feature-name
- Make your changes and commit: git commit -m "Description of changes" Push to your branch: git push origin feature-name Open a Pull Request
This project is licensed under the MIT License.