Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 

This is the backend that serves map tiles and data for the election map which is deployed at https://elections.adrianfrith.com/. The repository for the frontend is at https://github.com/afrith/election-map-frontend.

Service

The service provides Mapbox Vector Tiles (MVTs) for five levels of electoral geography: province, district council, municipality, ward, and voting district. The tiles include selected data points from the election results for ease of rendering. The tiles are provided at URLs of the form /tiles/{level}_{election}/{z}/{x}/{y}/tile.mvt, where:

  • {level} is one of "prov", "dist", "muni", "ward" or "vd", corresponding to the five levels of electoral geography listed above.
  • {election} is be one of "npe2004", "npe2009", "npe2014" or "npe2019".

The service also provides an endpoint to fetch full details of election results for any electoral geography as a JSON document. This endpoint is provided at URLs of the form /{election}/{ballot}/{level}/{code}, where:

  • {level} and {election} are as described above.
  • {ballot} is either "nat" or "prov", for the national and provincial ballot results respectively.
  • {code} is the unique code identifying a geography, which can also be found in the code property of objects in the MVTs.

Tech stack

  • Data store
    • PostgreSQL
    • PostGIS
  • Service
    • Node.js
    • Express.js
    • TileStrata
    • tilestrata-postgismvt slightly modified (see repo)

Running

To run the service you need the data, which can be downloaded here as a 1GB PostgreSQL dump file. Then you need to set three environment variables.

  • DATABASE_URL is the URL of the PostgreSQL database (e.g. postgres://localhost/election-results).
  • TILECACHE_DIR is the location of a directory to use to cache MVTs - since the data is unchanging the tiles never expire; if you need to clear the cache, delete the contents of this directory.
  • PORT is the port on which the service will listen (defaults to 3000).

Then you can run yarn build && yarn start to run the service.

About

Backend service for interactive SA election result map

Resources

License

Releases

No releases published

Packages

No packages published