# KANDIMAT 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. ## Issues ..are tracked @ https://git.netzbegruenung.de/NB-Public/kandimat/issues ## 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`](resources/Rechenmodell%20des%20Wahl-O-Mat.pdf). ## ⌨️ Development This is a Vue.js progressive web application, developed with [`@vue/cli`](https://github.com/vuejs/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. ### Notes * 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`) ## Props This user app is based on source code of EUROMAT targeted at european elections.