Magnolia is a Django-based blogging engine.
- Rich-text post formatting using the block editor
- Posts tagging
- SEO-friendly URLs
- Searching of posts
- Drafts
- Featured posts
- RSS syndication
- Blog avatar and cover in the page header
- Social contacts
- Pagination
The following guide is for local development only.
-
Install Python 3.12+ and Node.js 24+.
-
Clone repo:
git clone https://github.com/iriscot/magnolia-blog
cd magnolia-blog- Create and enter a Python environment:
python3 -m venv blog_env
source blog_env/bin/activate- Install Python dependencies:
python -m pip install -r requirements.txt- Install frontend dependencies and build CSS:
npm install
npm run build-css- Configure local environment variables:
export DJANGO_DEBUG=True- Apply database migrations:
python manage.py migrate- Run the local server:
python manage.py runserver- Open
http://127.0.0.1:8000.
Set production secrets and hosts with environment variables instead of editing settings.py:
DJANGO_SECRET_KEY- required whenDJANGO_DEBUGis false;DJANGO_DEBUG- set toFalseor leave unset in production;DJANGO_ALLOWED_HOSTS- comma-separated host names;DJANGO_CSRF_TRUSTED_ORIGINS- comma-separated trusted origins, including scheme;DJANGO_DB_ENGINEandDJANGO_DB_NAME- database engine and database name/path;DJANGO_TIME_ZONE- default timezone;POSTS_PER_PAGE- posts displayed per page;MAX_UPLOAD_SIZEandMAX_REMOTE_IMAGE_SIZE- upload limits in bytes;DJANGO_SECURE_SSL_REDIRECT,DJANGO_SECURE_HSTS_SECONDS,DJANGO_SESSION_COOKIE_SECURE,DJANGO_CSRF_COOKIE_SECURE- HTTPS-related security options.
Magnolia is available in English and Russian out of the box. You can create your own translations:
django-admin makemessages -l [YOUR_LOCALE_CODE]
django-admin makemessages -l [YOUR_LOCALE_CODE] -d djangojs