Stembureau app: E-democracy tool to run smoother elections.

Elements teamed up with long-time partner KPN to develop StembureauApp (PollingStationApp), a scalable and multi-platform solution to assist and support polling station staff before and during the elections in the Netherlands. It is now used by sixteen Dutch municipalities at over 2.600 polling stations.

Python/Django backend, Kubernetes, Angular frontend, native iOS en native Android development
Release date
2018 - heden

Elements, several municipalities and KPN teamed up to build the StembureauApp. It consists of a front-end application, a lightweight mobile app for iPad and Android tablets and a fully scalable back-end built in Python/Django running in a Kubernetes cluster. With StembureauApp, the chairman from every polling station can now quickly validate voting passes by simply scanning the printed QR code, engage in a direct chat with the elections’ support desk, complete checklists and perform a quick vote count at the end of the election day.


2600 polling stations in 18 municipalities

De StembureauApp is used in municipalities like Rotterdam, Den Haag, Utrecht, Zoetermeer en Eindhoven.

Efficient processing of votes

By scanning the QR code we realised a higher quality of counting and quicker published turnout.

Our approach

StembureauApp in action

The use of the StembureauApp for the elections in 2018 and 2019 were a huge success. Across the participating municipalities, the app was used in more than 1,300 polling stations, where almost one million voters had their voting passes scanned.

Due to the Covid pandemic and the new health measures established by the Dutch government, the 2021 & 2022 elections are going to be held during a 3 day period instead of just one. This change aims to give more time to citizens to cast their vote. We have had to quickly adapt StembureauApp to make it work in this new setting. The app was designed around the idea that elections take place during one unique day. Implementing these changes with the minimum friction to avoid major breaking changes has been a real challenge due to the strict timings and the technical complexity of the application. In essence, we have generalised the app's database structure in a way that allows to run elections for any number of days so that StembureauApp can now work in both settings.

No items found.
No items found.

A new, safer and fully scalable back-end

We rewrote the legacy back-end application, built in Java and Oracle, from scratch in Python/Django with a PostgreSQL database. A lot of effort was put into making the application scalable by making it containerized and having it run in a Kubernetes cluster. New lightweight native apps for iOS and Android were built and the Angular front-end was updated.

As we were rebuilding the back-end application from the ground up, we could adhere to the principles of security by design by implementing security measures in the application and infrastructure from day one.

Hosting moved from Rotterdam’s premises to AppFactory, KPN’s premium continuous delivery cloud platform.

No items found.
No items found.

End Result

The key accomplishment of this project is the transformation from a non-scalable, single-tenancy back-end and separate, tailor made mobile apps for each municipality to a horizontally scalable, multitenancy back-end and generic, multi-platform mobile app. StembureauApp is now ready for deployment of any number of new participating municipalities at a click of a button.

Participating municipalities are very happy with the more efficient voting process. They experience less mistakes and can share the number of voters much quicker.