Static site for the PyCon DE & PyData conference, built with Lektor. Serves the current edition plus an archive of every previous edition with talks, speakers, recordings, transcripts, and full-text search.
Speakers: session and bio data come from Pretalx. Update your information there; the website picks up changes on the next scheduled sync. Direct edits to talk or speaker files in this repo are overwritten by the next import.
The site has three operating modes. Find yours, follow the link.
- Running the current edition — daily ops while the upcoming or in-flight conference is live: blog posts, sponsors, landing pages, Pretalx sync, deploys, contact form.
- After the conference — once the event is over: link YouTube recordings, import transcripts, switch the landing page to recap mode, cut the edition over to the archive.
- Archive — how prior editions are stored and served: slug URLs, Pretalx-code redirects, per-track index pages, cross-edition speakers, search.
Cross-cutting topics referenced from every phase:
- Local development setup (this file, below)
- Template components and macros
- SEO machinery — sitemaps, breadcrumbs, JSON-LD, social-link normalisation
- Site search (Pagefind)
- Redirects — manual entries plus generated nginx / Caddy snippets
- Deployment
Requires Python 3.12+, make, and either uv (preferred) or pip with venv.
uv venv
source .venv/bin/activate
uv pip install -e .Run the build pipeline once to materialise generated content (tracks, redirects, Pagefind index):
make buildFor interactive editing, the Lektor dev server reloads on file changes but does not run the post-build steps (Pagefind index, redirect generation). When testing search or redirects, run make build and serve the site/ directory with a static HTTP server instead — see docs/search.md for the launch profile.
make run # Lektor dev server on :5001
make build # Full production build into site/The optional [backend] extra pulls in dependencies for the contact-form FastAPI service. See docs/contact_form.md.