This project powers the EuroPython 2025 website, Discord bot, and internal bot 🦜 by downloading, transforming, and serving clean, structured JSON files for sessions, speakers, and the schedule, all pulled from Pretalx.
Built for transparency. Designed for reuse. Optimized for EuroPython.
- Downloads submission and speaker data from Pretalx.
- Transforms raw data:
- Removes private/irrelevant fields
- Normalizes formats
- Adds computed fields (e.g. URLs, delivery mode)
- Serves the transformed JSON files via a static API.
-
Clone the repo
git clone https://github.com/EuroPython/programapi.git cd programapi
-
Install uv (fast Python package manager)
-
Create a Python 3.13 virtual environment
uv venv -p 3.13
-
Install dev dependencies
make dev
-
Enable pre-commit hooks
make pre-commit
You can update the event year or shortname in src/config.py
.
Also, create a .env
file in the project root and set:
PRETALX_TOKEN=your_api_token_here
(Yes, Pretalx has rate limits. Please be nice. 🤪)
-
Run the entire pipeline:
make all
-
Run only the download step:
make download
-
Run only the transformation step:
make transform
-
(Optional) Exclude components:
make all EXCLUDE="schedule youtube"
Hosted at:
https://static.europython.eu/programme/ep2025/releases/current
Endpoint | Description |
---|---|
/speakers.json |
List of confirmed speakers |
/sessions.json |
List of confirmed sessions |
/schedule.json |
Latest conference schedule |
Looking for field definitions and examples?
Check out the 👉 data/examples/README.md
for a full schema reference with example payloads and explanations.
Feel free to open an issue or reach us at [email protected]. We love contributors 💜
📅 Last updated for: EuroPython 2025