Go to file
Jim Martens 6add2baa40
continuous-integration/drone/tag Build is passing Details
fix: Prevent endless loop
2024-06-09 11:12:47 +02:00
.github/workflows Allow writing sarif reports to GitHub 2023-08-03 00:20:32 +02:00
buildSrc Remove deprecated usage 2023-10-29 00:50:55 +02:00
config/checkstyle Initial commit 2023-07-01 21:49:36 +02:00
gradle chore: Version update 2024-03-06 15:19:53 +01:00
http-requests chore: Add dummy election result for 2024 2024-05-06 22:26:55 +02:00
module-deploy Removed chart 2023-08-23 08:28:47 +02:00
module-server fix: Prevent endless loop 2024-06-09 11:12:47 +02:00
scripts Added scripts to help with nebula releases 2023-08-15 08:25:46 +02:00
.drone.yml fix: Update values in correct repository 2024-01-06 15:41:51 +01:00
.editorconfig Improved code style of Kotlin 2023-08-19 03:53:40 +02:00
.gitattributes Initial commit 2023-07-01 21:49:36 +02:00
.gitignore Exclude env.sh script 2023-08-15 09:28:32 +02:00
LICENSE Initial commit 2023-07-01 21:49:36 +02:00
README.md Added data source 2023-07-22 08:32:59 +02:00
build.gradle.kts Applied code formatting 2023-07-29 14:04:47 +02:00
gradle.properties Finished migration to Kotlin 2023-07-30 18:17:40 +02:00
gradlew Changed executable permission of gradlew 2023-08-15 00:20:50 +02:00
gradlew.bat Initial commit 2023-07-01 21:49:36 +02:00
lombok.config Initial commit 2023-07-01 21:49:36 +02:00
qodana.sarif.json Added sarif report 2023-08-02 17:48:59 +02:00
qodana.yaml Use recommended Qodana profile 2023-08-03 14:19:30 +02:00
settings.gradle.kts Enabled deployment 2023-08-15 00:13:28 +02:00

README.md

Wahlrecht (Electoral Law)

This application allows the storage of core election data (elections, parties, nominations, candidates, election results) and the calculation of election results. This can be used to quickly get the list of elected candidates from each party based on a final, incomplete or fictional election result.

Motivation

The electoral law for the district and city elections in Hamburg is rather complex on the side of counting the results. This application takes away the complex part of determining the elected candidates based on the vote results. This allows, for example, playing around with what-if scenarios: What if one party gets 100 more votes in one constituency, how would that change the set of elected candidates?

Another motivation: the official list of vote results per candidate is only available in a PDF and not in machine-readable format. All vote results for each candidate were extracted manually from that PDF and are now available in easy-to-consume JSON format.

Correctness

The correctness of the calculation was tested with the final election results from the 2019 district election. When calculating, the application returns the utilized election numbers which can be used to compare with the official calculation as documented by the Statistikamt Nord. Except rounding differences a couple positions after the point, the numbers are equal.

Furthermore, unit tests check those results automatically.

Data source

The source for the data that will be available on the hosted service is the Statistikamt Nord. All information can be obtained from there (in German): https://www.statistik-nord.de/wahlen/wahlen-in-hamburg/bezirksversammlungswahlen/2019#c7624