# Kandimat - Wahl-o-Mat fuer Personalwahlen ## Introduction The kandimat is a Wahl-o-Mat for elections of candidates. ## Services The project consists of three services: * GraphQL backend (+ postgres) * Redaktions-App * User-App ### Redaktions-App The Redaktions-App is used for editors and candidates to provide questions and answers. The app is written with react and appollo-react to access the backend. See also: [Service Readme](redaktions-app/README.md) ### User-App The User-App is based on the [EuroMat](https://www.euromat.info/en) (Source: https://github.com/morkro/euromat) and is used to find the perfect candidate for everyone who is allowed to vote. It is written in vue.js. See also: [Service Readme](https://git.verdigado.com/Netzbegruenung/kandimat-user-app/src/README.md) ### Postgraphile (Backend) A package which creates an GraphQL api based on an underlying postgres schema. For more on this (e.g. how to use the graphQl api by yourself) see [backend readme](backend/README.md) ## Development Setup ### Check-out repository * [Install git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) * `git clone https://git.verdigado.com/Netzbegruenung/kandimat.git` * To get the (external) user-app source: ``` git submodule update --init ``` ### Setup Docker Install [docker-compose](https://docs.docker.com/compose/install/) on your system. ### Start whole setup For dev setup: ``` docker-compose up ``` * GraphQL IDE/GUI: http://localhost:5433/graphiql * GraphQL Endpoint: http://localhost:5433/graphql * UserApp: http://localhost:8080 * RedaktionsApp: http://localhost:8081 * Postgres database: http://localhost:5432 **Note:** The database will use a volume to persist changes in-between runs. To start with a clean database, either delete the volume from the postgres configuration in the compose file or run ``` docker container rm kandimat_postgres_1 docker volume rm kandimat_db-data ``` before starting docker-compose. ### Manual testing Either go to the User-App and mess around with the existing test data or use GraphiQL directly (links are above).