Tasks performed while the upcoming or in-flight conference is the live site at https://2026.pycon.de/ (or whatever the current edition's host is).
- Pretalx sync —
.github/workflows/fetch_submissions.ymlimports talks and speakers from the Pretalx API on a schedule. The cron is paused outside conference cycles; re-enable it by uncommenting theschedule:lines in the workflow when the next CFP closes. Manual runs viaworkflow_dispatchare always available. - Deploy —
.github/workflows/main.ymlbuilds and uploads to S3 on every push tomain. - Staging deploy —
.github/workflows/development.ymlmirrors the above for the staging bucket.
| Task | Doc |
|---|---|
| Add or edit a blog post | docs/blog_post.md |
| Add a sponsor or community partner | docs/sponsors_partners.md |
| Add a subsite (a top-level page that isn't a blog post) | docs/subsites.md |
| Manage the homepage / landing page (pre-, during-, post-conference) | docs/landing_pages.md |
| Talk / speaker data from Pretalx | docs/pretalx.md |
| Contact form (FastAPI backend) | docs/contact_form.md |
| Deploy to S3 | docs/deployment.md |
- Never edit talk or speaker files directly. They are regenerated by the Pretalx importer on the next sync — your changes will disappear. Push edits upstream in Pretalx instead.
- Configurable values live in YAML databags (
databags/) — slugs, claims, contact addresses, social URLs, IDs. No literal config in templates or Python. - Generated content folders under
content/(tracks, redirect pages, sitemap segments, search index) are produced bymake build. Do not hand-edit them — re-run the build instead.
make build runs four phases in order; each is also exposed as its own target.
make redirects # databags/redirects.yaml + per-talk Pretalx-code redirects → content/, site-config/
make tracks # scan talks → content/tracks/ and content/archive/{year}/tracks/
make lektor-build # Lektor renders content/ + templates/ → site/
make pagefind # site/ → site/pagefind/ (search index, ~12 MB)
Run an individual phase when iterating on its inputs. Run make build before any deploy.
- A talk page is missing → check the latest Pretalx sync ran (workflow run page) and that the talk is
confirmedin Pretalx. - A talk shows raw
${...}or empty fields → the importer schema may have drifted; see docs/pretalx.md for the year-keyed field mapping indatabags/pretalx.yaml. - Search returns no results → the Lektor dev server doesn't serve the Pagefind index. Run
make buildand servesite/directly. Details in docs/search.md. - The site builds locally but the deploy fails → check
.github/workflows/main.ymland the AWS secrets list in docs/deployment.md.