64e6b861b6
Also * reorder graphQl queries: Always a query constant + update function * use id instead of token (initials) to identify person in url * Remove any party logo related sections since currently not needed * Move "options" from data closer to actual code since it doesn't really belong to data (data may be deleted in the future, anyway) * add nodeId in gql queries wherever possible to avoid problems with the apollo cache * add note about graphql schema import to README.md |
||
---|---|---|
bin | ||
public | ||
resources | ||
src | ||
tests/unit | ||
.browserslistrc | ||
.dockerignore | ||
.editorconfig | ||
.eslintrc.js | ||
.gitignore | ||
.graphqlconfig | ||
.snyk | ||
LICENSE | ||
README.md | ||
babel.config.js | ||
dev.Dockerfile | ||
jest.config.js | ||
package-lock.json | ||
package.json | ||
postcss.config.js |
README.md
CANDYMAT
A Vue.js powered, progressive web voting application for upcoming internal elections of Bündnis90/Die Grünen. Candymat 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.
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 beperson
)
Props
This user app is based on source code of EUROMAT targeted at european elections.