1.8 KiB


A Vue.js powered, progressive web voting application for upcoming internal elections of Bündnis90/Die Grünen. Kandimat is hosted as a service of netzbegruenung e.V.

Calculation Model

The calculation model for voting has been defined by the German Federal Agency for Civic Education (Bundeszentrale für politische Bildung). A good overview can be found in this PDF: resources/Rechenmodell des Wahl-O-Mat.pdf.

⌨️ Development

This is a Vue.js progressive web application, developed with @vue/cli.

Command Description
npm install Installs dependencies
npm run serve Serve with hot reload at localhost:8080
npm run build Build for production with minification
npm run test:unit Run all unit tests
npm run lint Runs standard over all .js and .vue files and fixes problems
npm run svg Creates all SVG files used in the application
npm run admin Creates config.yml for Netlify CMS admin UI

Working with GraphQl backend

As a connector to the backend, apollo-vue is used. Queries are written as gql strings. To have schema hints etc, there is a .graphqlconfig file which should help dedicated IDE plugins to infer the GraphQl schema directly from the (running) backend (see main project for more information on how a "running backend" is achieved). For example, the Intellij JS GraphQL plugin will automatically ask to download the schema definition.


  • To keep the diff to the original euromat source as small as possible certain variables follow a naming convention which may seem weird at first. These include
    • party (better description would be person)


This user app is based on source code of EUROMAT targeted at european elections.