Skip to content

Conference Talks Website

A Django 6 application that publishes talks, schedules, and live Q&A for conference events such as PyCon DE and PyData Berlin. One installation serves multiple events at once, each with its own branding, talks, and users.

This codebase powers the public sites talks.pycon.de and videos.pydata-berlin.org.

Features

  • Multi-event support - manage multiple conferences from a single instance, each with its own branding, talks, and users
  • Talk management - import talks from Pretalx, browse by room/track/date, full-text search
  • Schedule - grid view organized by room and time slot
  • Ratings - attendees can rate talks (1-5 stars) with optional comments, visible only to admins
  • Q&A - attendees ask and vote on questions; moderators approve, reject, or mark them answered
  • Saved talks - bookmark talks for quick access later
  • Live streaming - embed Vimeo/YouTube streams per room with automatic detection
  • Social cards - auto-generated talk images with speaker avatars for sharing on social media
  • Passwordless login - email-based login codes; no passwords for regular users
  • Discord OAuth - optional login via Discord with role-based access control
  • Dark mode - class-based toggle with Tailwind CSS v4
  • HTMX - dynamic dashboard, ratings, Q&A voting, and partial page updates without full reloads
  • Structured logging - JSON logs with rotating file handlers and email privacy (hashed emails)
  • Health checks - /ht/ endpoint for monitoring

Tech stack

Layer Technology
Language Python 3.14
Framework Django 6
ASGI server Daphne
Auth django-allauth (email codes + Discord OAuth)
Frontend Tailwind CSS v4, HTMX
Database SQLite (dev), PostgreSQL 18 (prod)
Email Mailpit (dev), Mailgun (prod)
Logging structlog + django-structlog
Talks import Pretalx REST API
Video Vimeo API, YouTube embeds
Deployment Docker multi-stage build, Nginx, Let's Encrypt
Package mgr uv

Where to go next

  • Getting started - set up a local development environment with one command, log in with test users, and explore the app.
  • Architecture - how the Django apps fit together: events, talks, users, and the external integrations (Pretalx, Vimeo, Discord, Mailgun).
  • Features - a tour of what the site does for attendees and organizers, starting with talks and the schedule.
  • Development - day-to-day commands, testing, code quality tools, and running the full Docker stack locally.
  • Reference - management commands for importing talks, livestream URLs, video links, and generating fake data.
  • Deployment - the tag-driven CI/CD pipeline, shared GHCR images, and per-site server setup.

In a hurry?

The quickest way to see the app running is the one-command dev setup described in Getting started. It creates test users, fake talks, and starts the server on port 8000.

Curious how this project came about? Read the story behind it, from a streaming problem at PyCon DE 2025 to the app that runs today.

Want to help out? See the contributing guide. The project is open source under the MIT license.