Overview
The Chronicle is an editorial-standard digital journalism and media publishing platform engineered with Django 5.1 LTS and Python 3.12. Designed with the visual quality of leading global publications like The New York Times and the BBC, it provides newsrooms, content creators, and developers with a complete, production-ready CMS solution.
✨ Core Highlights & Features
- Modern Editorial Admin (Django Unfold): Real-time KPI dashboard (total articles, views today, pending comments, subscribers) with custom publishing workflows (Draft → Submit for Review → Published), thumbnail previews, and moderation filters.
- Adaptive Tailwind Design System: Clean light and dark modes with zero-FOUC initialization, font size scalers (A− / A+), reading progress indicators, and mobile-friendly responsive navigation.
- Editorial CRUD & Authoring: Rich WYSIWYG editing via
django-ckeditor-5, automated reading time calculations, image captions, and session-deduplicated view impression tracking. - Taxonomy & Discovery: Multi-tier categories and subcategories, tag archives powered by
django-taggit, and multi-filter full-text search. - Engagement & Community: Moderated comment queue with bot-resistant honeypot validation and double opt-in newsletter system with UUID unsubscribe tokens and admin CSV exports.
- Syndication & SEO: Dynamic XML sitemaps, RSS 2.0 feed (
/feed/rss/), Open Graph / Twitter Card metadata, and Schema.orgNewsArticleJSON-LD structured data. - Enterprise Security: Granular role-based permissions (Reader, Writer, Editor, Admin), Argon2 password hashing, A+ security headers, and strict CSRF protection.
🚀 Quick Start (Local Setup)
# 1. Clone the repository
git clone https://github.com/7AZZANI/django-news-website.git
cd django-news-website
# 2. Set up virtual environment and install dependencies
python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
# 3. Initialize database and seed demo dataset
cp .env.example .env
python manage.py migrate
python manage.py seed_news
# 4. Start development server
python manage.py runserver
🔑 Pre-Configured Demo Accounts
When initialized via python manage.py seed_news, three test accounts are immediately ready:
- Chief Editor (Superuser / Admin):
admin@thechronicle.internal• Password:AdminNews2026! - Senior Editor:
editor@thechronicle.internal• Password:EditorNews2026! - Lead Tech Journalist:
journalist@thechronicle.internal• Password:WriterNews2026!
🛠️ Tech Stack & Production Deployment
Includes production configurations in the deploy/ directory for Ubuntu 22.04 / 24.04 LTS:
- Application Server: Gunicorn with Systemd socket activation
- Reverse Proxy: Nginx reverse proxy with HTTP/2 and gzip caching
- Database: PostgreSQL (with zero-config SQLite local development fallback)
- SSL / TLS: Automated Let's Encrypt Certbot renewal configuration
❤️ Support & Next Projects
If you love this project and want to support more open-source developer tools and web applications, you can support me directly and share your ideas for future releases at: 7AZZANI Support & Donations.