This repository provides a reusable Django app to publish talks, schedules, and Q&A for different events (e.g., PyConDE, PyData Berlin).
All configuration variables are listed in the django-vars.env file. If you set
DJANGO_READ_VARS_FILE=true, the values will be read from that file otherwise you'll need to export
them as environment variables.
The most straightforward way to run the project is to open it in a dev container or run the
dev-setup.sh script locally:
RUN_SERVER=true PRETALX_SYNC=false IMPORT_STREAMS=false GEN_FAKE_DATA=true .vscode/scripts/dev-setup.sh
It will download uv and create a virtual environment (.venv) with tailwindCSS, Mailpit,
Python and all other dependencies required for development and testing.
It will also run migrations, create test users ([email protected], [email protected] and
[email protected]), generate fake data and start the server in debug mode (on port
8000) and a Mailpit instance to test emails (on port
8025).
All users can login via email, including admins:
- go to http://127.0.0.1:8000
- enter
[email protected],[email protected]or[email protected] - go to http://localhost:8025/ to see the emails sent
- copy the validation code to the form
Admins can also login with password in the admin interface:
- open http://127.0.0.1:8000/admin/
- login with admin:
- email:
[email protected] - password:
admin
- email:
- browse to http://127.0.0.1:8000/
The project uses pytest for testing. To run the tests, run:
uv run pytest
This repository includes example files for a deployment using Docker, PostgreSQL, Nginx, and Mailgun. Adapt them to your needs.
Example:
sudo mkdir -p ${MEDIA_DIR}
sudo mkdir -p ${STATIC_DIR}
sudo mkdir -p ${LOGS_DIR}
cd docker
docker buildx bake --allow=fs.read=..
mv staticfiles/* ${STATIC_DIR}/
sudo APP_DOMAIN=my.example.com ./ensure_permissions.sh
docker compose up -d
sudo vi /etc/nginx/sites-available/${APP_DOMAIN}
sudo ln -s /etc/nginx/sites-available/${APP_DOMAIN} /etc/nginx/sites-enabled/${APP_DOMAIN}
sudo certbot --nginx -d ${APP_DOMAIN}
sudo systemctl reload nginx