Set SECRET_KEY to a strong random value
Generate a new secret key and set it in Store this value securely — for example, in an environment variable or a secrets manager — and never commit it to version control.
settings.py (or load it from an environment variable):settings.py
Switch the database to PostgreSQL
SQLite is not recommended for production workloads. Configure PostgreSQL in Install the adapter if you haven’t already:
settings.py:settings.py
Configure the email backend
SIGEP sends invite emails containing set-password links. Set your SMTP credentials in
settings.py:settings.py
Collect static files
Gather all static assets into the Configure your web server to serve the
staticfiles/ directory so your web server can serve them:staticfiles/ directory at the /static/ URL path.Configure nginx and gunicorn
A common production setup uses gunicorn as the application server behind nginx.Install gunicorn:Start the application server:Then configure nginx to proxy requests to gunicorn and serve static files directly:
nginx.conf
Configure media file serving
Uploaded files (event images, documents) are stored under
MEDIA_ROOT (the media/ directory). Your web server must serve this directory at the /media/ URL path. In production, Django does not serve media files automatically — that only happens when DEBUG = True.media/ directory exists and is writable by the process running gunicorn:Next steps
Configuration reference
Full reference for all configurable settings in SIGEP.
Installation
Set up a local development environment.