/ Software Architect the Dutch Electoral Council (Kiesraadf t Developing software for 20+ yeare t MSc Embedded Systems, BSc Computer Science & Engineering 2
10M voters C 100K volunteers C 10K polling stations C 342 municipal polling committe C 20 electoral district polling committee C 1 central polling committee Software is needed to add everything up! 6
started end of 202 E Double entry of polling station result& E Calculates totals for municipality, district, countrÈ E Runs decentralised (for each polling committee7 E No internet connection (airgapped) 9
Velden (coördinator) Afmelden Eerste zitting Steminvoer bezig Schorsen Afronden Statusoverzicht steminvoer Bezwaren en bijzondernehden Presentielijst Stembureaus Stembureaus per status Fouten en waarschuwingen (5) Niet afgeronde invoer (5) In onderzoek (3) Invoer bezig (6) Eerste invoer klaar (5) Eerste en tweede invoer klaar (123) Werkvoorraad (154) Voortgang Invoer met fouten en waarschuwingen (5) Te controleren Verschil 1e en 2e invoer Controleer 2 waarschuwingen Controleer 1 waarschuwing Beoordeel bezwaren en bijzonderheden Verschil 1e en 2e invoer Stembureau Schoolstraat 78 2e invoer Fluisterbosdreef 8 1e invoer Beatrixstraat 19 1e invoer Zonnebloemstraat 18 Nachthemelstraat 21 2e invoer 15 16 47 132 341 Nummer Niet afgeronde invoer (3) Stembureau Schoolstraat 78 2e invoer Fluisterbosdreef 8 1e invoer 132 341 Nummer Invoerder 18 Sara van Houten 21 Leila de Jong
The frontend is the web application used by the users. Built in TypeScript+React. The backend is the server application that contains the logic of the system. Built in Rust. The database manages the storage of the system's data. SQLite has been chosen. Architecture 12
Input of polling station results. election Management of election data eml Import and export of files in EML_NL (XML) format pdf_gen Export of files in PDF format polling_station Export of files in PDF format report API to create PDF, EML_NL, and ZIP files summary Calculating the total election results audit_log Tracking and displaying audit events Backend architecture Abacus Backend Abacus Frontend 13
m EU Public License (EUPL) 1.a m Contributions welcome2 m GitHub Actions for CC m Static analysis (linting) using Clippy from day t m Codecov for test coveragi m Playwright for end-to-end testin m Test environments using Etes: https://abacus-test.nS m https://github.com/tweedegolf/eteP m Integrated with GitHub PRP m Figma for UX design 15
OpenAP G sqlx for databasD G Typst for PDF generatio" G quick-xml for XML import/expor0 G Serde for serializing and deserializin G .. and some other (smaller) crates 16
to hire senior developer1 Y Medior developers able to learn RusR Y Ecosystem has crates for almost everythinC Y Stable, although many crates only have 0.x release1 Y Crates for e.g. XML are lacking compared to other language1 Y Limited availability of third party code quality and architecture toolinC Y Would definitely choose Rust again! 17