geekLections — inClement elections, geekily.

Code, Open-Source Tools & Architecture

Two-Arm Monorepo Architecture (`gl-web`)

The rejuvenated geekLections platform operates as a unified two-arm monorepo:

  1. Arm 1 — Python Data & Bayesian Modelling Pipeline (pipeline/): Managed via uv and pyproject.toml, utilizing PyMC v5, PyTensor, ArviZ, and DuckDB/Parquet. Large raw AEC polling-booth CSVs, SA1 redistribution concordances, and MCMC posteriors are stored in an external cloud-synced folder (GL_DATA_DIR), while compact JSON summaries stamped with SHA-256 _provenance manifests are emitted into static/data/.
  2. Arm 2 — SvelteKit 2 + Svelte 5 Runes + Bootstrap 5 Static Website (src/): Prerendered via @sveltejs/adapter-static for zero-server deployment on Cloudflare Pages at geeklections.au, preserving the classic blog.geeklections.com.au dark charcoal theme and hosting both frozen legacy websites under /historic/blog/ and /historic/www/.

Open-Source Repositories on GitHub

  • github.com/geeklections — Organization home for Australian federal, state, and student election scripts, hexagonal cartograms, and preference allocators.
  • Australian Senate Group Voting Ticket (GVT) & STV Simulator (2013–2016): Python scripts used to simulate the 2013 Federal Senate counts, the 2014 WA Senate re-election, and the 2016 Double Dissolution Senate counts.
  • Tactical Below-The-Line (BTL) Preference Generator (2016–2025): Data pipelines and candidate political-compass matrices for Federal and NSW Legislative Council elections.
Historic Archive Snapshot: Originally published on www.geeklections.com.au.