{"id":18813182,"url":"https://github.com/stustanet/wahlfang","last_synced_at":"2025-04-13T21:26:22.152Z","repository":{"id":115881679,"uuid":"257677120","full_name":"stustanet/wahlfang","owner":"stustanet","description":"Wahl im Netz","archived":false,"fork":false,"pushed_at":"2023-10-07T11:35:53.000Z","size":2636,"stargazers_count":21,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-27T11:43:41.464Z","etag":null,"topics":["election","elections","evoting","online-elections","voting"],"latest_commit_sha":null,"homepage":"https://gitlab.stusta.de/stustanet/Wahlfang","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stustanet.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-21T18:10:55.000Z","updated_at":"2023-12-30T17:05:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"3d27bac5-8c38-4502-9a52-45875c16500f","html_url":"https://github.com/stustanet/wahlfang","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stustanet%2Fwahlfang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stustanet%2Fwahlfang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stustanet%2Fwahlfang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stustanet%2Fwahlfang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stustanet","download_url":"https://codeload.github.com/stustanet/wahlfang/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248784222,"owners_count":21161078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["election","elections","evoting","online-elections","voting"],"created_at":"2024-11-07T23:36:40.704Z","updated_at":"2025-04-13T21:26:22.146Z","avatar_url":"https://github.com/stustanet.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wahlfang\n\u003e A self-hostable online voting tool developed to include all the \n\u003e features you would need to hold any online election you can dream of\n\nDeveloped by [StuStaNet](https://stustanet.de) Wahlfang is a small-ish Django project\nwhich aims at being an easy to use solution for online elections. From simple one-time\nvotes about where to grab a coffee to large and long meetings with multiple different \nvotes and elections - Wahlfang does it all.\n\nIf you would like a new feature or have a bug to report please open an [issue](https://github.com/stustanet/wahlfang/issues).\n\n## Getting Started\nTo setup your own wahlfang instance for productive use see [deploying](docs/deploying.md).\n\n### Metrics\n\nIn the default configuration wahlfang exports some internal application statistics as [Prometheus](https://prometheus.io/) \nmetrics at the endpoint `/metrics`. This behaviour can be turned off by settings `EXPORT_PROMETHEUS_METRICS = False`\nin the application settings.\n\nWe use the [django-prometheus](https://github.com/korfuri/django-prometheus) project to export our exports.\n\n## Contributing\nTo just get the current version up and running simply\n```bash\n$ git clone https://gitlab.stusta.de/stustanet/wahlfang.git\n$ cd wahlfang\n$ pip3 install -r requirements.txt\n$ pip3 install -r requirements_dev.txt\n$ export WAHLFANG_DEBUG=True\n$ export PYTHONPATH=\"$PYTHONPATH:.\"\n$ python3 wahlfang/manage.py migrate\n$ python3 wahlfang/manage.py runserver localhost:8000\n```\n\nCreating a local election management user:\n```bash\n$ python3 wahlfang/manage.py create_admin\n```\n\nLogin to the management interface running at [http://127.0.0.1:8000/management/](http://127.0.0.1:8000/management/).\n\nRun the linting and test suite\n```bash\n$ make lint\n$ make test\n```\n\nIf some model changed, you might have to make and/or apply migrations again:\n```bash\n$ python3 wahlfang/manage.py makemigrations\n$ python3 wahlfang/manage.py migrate\n```\nDon't forget to add the new migration file to git. If the CI pipeline fails this is most likely the reason for it.\n\n## Releasing\nThe release process is automated in the gitlab ci.\n\nTo make a new release bump the package version number in `wahlfang.__init__.py` and tag the commit with the same version\nnumber. The CI will then build the package, publish it as a gitlab release and push it to pypi.\n\nThe pypi credentials must be set in the gitlab CI settings via the env variables `TWINE_USERNAME` and `TWINE_PASSWORD`.\n\n## Development References\n\n- Django 3: https://docs.djangoproject.com/en/3.2/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstustanet%2Fwahlfang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstustanet%2Fwahlfang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstustanet%2Fwahlfang/lists"}