This is a project for validating, organizing, and visualizing voting deadlines, starting with the 2020 elections in the USA.
The data pipeline is written in TypeScript, and the webapp is built with Svelte.
The underlying data (official state voting deadlines) is hard to perfectly capture in code, and keeps changing, so contributions are welcome.
Most can be installed with yarn in the packages/web folder.
On macOS, install trash-cli with brew install macos-trash (used by bin/ scripts).
- The webapp is in
packages/web. - The data pipeline is in
packages/web/src/data. - A WIP setup for visual and E2E testing is in
packages/e2e.
- Run
yarn devinpackages/webto start the Svelte webapp. - Run
yarn exportinpackages/webto build a static version of the webapp. - Run
make helpto see a list of available commands. - Run
make dataat root to pull/scrape fresh data. - Run
make mergeat root to merge source data topackages/web/src/data/.
Data is ingested from the sources below and merged into the packages/web/src/data/data folder.
Vote.gov contains voting registration deadlines and links, and is open source. To ingest, we do this:
- Download the source code of the website (
data-sources/vote.gov) - Keep just the file we care about (
vote.gov/state-data.raw.json) - Clean the source JSON into a simplified format (
vote.gov/state-data.cleaned.json) - Parse the JSON data into a standardized format (
vote.gov/state-data.parsed.json)
VoteAmerica.com data is scraped to get a second opinion about the Vote.gov data. Currently most of it is not merged into the final file, except for some official state website links.
There is some code to scrape Vote.org but it is not currently in use due to that data being relatively unstructured and harder to parse.
See CHANGELOG.md in this folder.