{"id":20722081,"url":"https://github.com/nordeck/matrix-poll","last_synced_at":"2026-01-20T09:09:59.783Z","repository":{"id":62637759,"uuid":"561220729","full_name":"nordeck/matrix-poll","owner":"nordeck","description":"This widget allows to conduct polls in Matrix rooms.","archived":false,"fork":false,"pushed_at":"2026-01-14T07:49:46.000Z","size":3318,"stargazers_count":48,"open_issues_count":17,"forks_count":9,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-14T09:24:12.132Z","etag":null,"topics":["element","hacktoberfest","matrix","matrix-widget-api","nordeck"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nordeck.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-11-03T08:08:44.000Z","updated_at":"2026-01-14T06:21:55.000Z","dependencies_parsed_at":"2023-02-19T10:30:33.406Z","dependency_job_id":"ef071810-0139-4ecb-ab3e-aed3634bf4e2","html_url":"https://github.com/nordeck/matrix-poll","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/nordeck/matrix-poll","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nordeck%2Fmatrix-poll","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nordeck%2Fmatrix-poll/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nordeck%2Fmatrix-poll/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nordeck%2Fmatrix-poll/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nordeck","download_url":"https://codeload.github.com/nordeck/matrix-poll/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nordeck%2Fmatrix-poll/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28599895,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T08:51:33.170Z","status":"ssl_error","status_checked_at":"2026-01-20T08:51:10.855Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["element","hacktoberfest","matrix","matrix-widget-api","nordeck"],"created_at":"2024-11-17T03:34:02.243Z","updated_at":"2026-01-20T09:09:59.771Z","avatar_url":"https://github.com/nordeck.png","language":"TypeScript","readme":"# NeoChoice\n\n![CI](https://github.com/nordeck/matrix-poll/workflows/CI/badge.svg)\n[![Matrix](https://img.shields.io/matrix/nordeck%3Amatrix.org)](https://matrix.to/#/#nordeck:matrix.org)\n\nThis widget allows to conduct polls in Matrix rooms.\nBut unlike [MSC3381](https://github.com/matrix-org/matrix-spec-proposals/blob/travis/msc/polls/proposals/3381-polls.md), it is designed for more complex scenarios, like polls with multiple parties in a council.\nYou have full control over your data, as it's stored in your Matrix room.\n\nIt supports creating parties, assigning members to them, and handling representatives.\nYou can prepare multiple polls in advance and then run through them in a session.\nAfter the registered users have voted, you can create a report with all results.\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"./docs/img/poll-create.png\" alt=\"Create Poll\"\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"./docs/img/poll-list.png\" alt=\"Poll List\"\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"./docs/img/poll-results.png\" alt=\"Poll Reuslts\"\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"./docs/img/poll-groups.png\" alt=\"Create Groups\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Demo\n\nTill now there is no officially hosted demo of the widget.\nSee the [Deployment](#deployment) section on how you can host the widget on your own.\n\n## Getting Started\n\nDevelopment on the widget happens at [GitHub](https://github.com/nordeck/matrix-poll).\n\n### How to Contribute\n\nPlease take a look at our [Contribution Guidelines](https://github.com/nordeck/.github/blob/main/docs/CONTRIBUTING.md).\nCheck the following steps to develop for the widget:\n\n### Requirements\n\nYou need to install Node.js (`\u003e= 20.0.0`, prefer using an LTS version) and run\n`yarn` to work on this package.\nThe minimal Element version to use this widget is `1.11.8`.\n\n### Installation\n\nAfter checkout, run `yarn install` to download the required dependencies\n\n\u003e **Warning** Do not use `npm install` when working with this package.\n\n### Configuration\n\nRename the provided `.env.local.default` to `.env.local` and fill it with your configuration.\nFor a list of available options, see [Configuration](./docs/configuration.md).\n\n### Running the Widget Locally\n\nFollow the [instructions to run the widget locally](https://github.com/nordeck/matrix-widget-toolkit/tree/main/example-widget-mui#running-the-widget-locally).\nThe widget comes with two routes, visit them and follow the further instructions:\n\n- The poll widget itself, providing the voting view: `http(s)://localhost:5273/`\n- The admin widget, providing the group configuration: `http(s)://localhost:5273/admin/`\n\n### Available Scripts\n\nIn the project directory, you can run:\n\n- `yarn dev`: Start the widget for development.\n- `yarn dev:https`: Start the widget for development with a self-signed HTTPS certificate.\n- `yarn build`: Build the production version of the widget.\n- `yarn preview`: Preview a production build of the widget.\n- `yarn preview:https`: Preview a production build of the widget with a self-signed HTTPS certificate.\n- `yarn test`: Watch all files for changes and run tests.\n- `yarn tsc`: Check TypeScript types for errors in the widget.\n- `yarn lint`: Run eslint on the widget.\n- `yarn prettier:write`: Run prettier on all files to format them.\n- `yarn depcheck`: Check for missing or unused dependencies.\n- `yarn deduplicate`: Deduplicate dependencies in the `yarn.lock` file.\n- `yarn changeset`: Generate a changeset that provides a description of a\n  change.\n- `yarn translate`: Update translation files from code.\n- `yarn generate-disclaimer`: Generates license disclaimer and include it in the build output.\n- `yarn docker:build`: Builds a container from the output of `yarn build` and `yarn generate-disclaimer`.\n- `yarn docker:run`: Runs the container and serves the widget at [http://localhost:3000](http://localhost:3000).\n- `yarn docker:stop`: Stops the running container.\n- `yarn docker:remove`: Removes and stops the running container.\n\n### Versioning\n\nThis package uses automated versioning.\nEach change should be accompanied with a specification of the impact (`patch`, `minor`, or `major`) and a description of the change.\nUse `yarn changeset` to generate a new changeset for a pull request.\nLearn more in the [`.changeset` folder](./.changeset).\n\nOnce the change is merged to `main`, a “Version Packages” pull request will be created.\nAs soon as the project maintainers merged it, the package will be released and the container is published.\n\n### Architecture Decision Records\n\nWe use [Architecture Decision Records (ADR)s](https://github.com/nordeck/matrix-widget-toolkit/blob/main/docs/adrs/adr001-use-adrs-to-document-decisions.md) to document decisions for our software.\nYou can find them at [`/docs/adrs`](./docs/adrs/).\n\n## Deployment\n\nYon can run the widget using Docker:\n\n```sh\ndocker run --rm -e REACT_APP_HOME_SERVER_URL=https://matrix-client.matrix.org -p 8080:8080 ghcr.io/nordeck/matrix-poll-widget:latest\n```\n\nBe sure, that you also read the security notes in the base image [@matrix-widget-toolkit/widget-server](https://github.com/nordeck/matrix-widget-toolkit/tree/main/containers/widget-server) docs.\n\nOur docker image supports customizing the nginx config by supplying additional config files.\nFor example, this allows running the image in an IPv4-only environment, as demonstrated at \u003chttps://github.com/nordeck/matrix-widget-toolkit/tree/main/containers/widget-server#custom-listen-directive\u003e\n\nWe also provide a [HELM chart](./charts/).\n\n## Supply Chain Security\n\nTo ensure transparency and security in our software supply chain, we provide comprehensive Software Bill of Materials (SBOM) reports for this project and signed container images.\n\n### SBOM Reports\n\nWe provide SBOM reports within the widget container and as a release artifact.\n\n- The generated SBOM report is available alongside the hosted widget assets, and can be found at `\u003cDEPLOYMENT-URL\u003e/sbom.spdx.json`, or via the filesystem at `/usr/share/nginx/html/sbom.spdx.json`\n- Each GitHub release has a corresponding image SBOM scan report file attached as a release asset\n\n### Signed Container Images\n\nThe container images releases are signed by [cosign](https://github.com/sigstore/cosign) using identity-based (\"keyless\") signing and transparency.\nExecute the following command to verify the signature of a container image:\n\n```sh\ncosign verify \\\n--certificate-identity-regexp https://github.com/nordeck/matrix-poll/.github/workflows/publish-release.yml@refs/tags/v \\\n--certificate-oidc-issuer https://token.actions.githubusercontent.com \\\nghcr.io/nordeck/matrix-poll-widget:\u003cversion\u003e | jq\n```\n\n## Matrix Room Upgrades\n\nThe widget room can be [upgraded](https://matrix.org/docs/communities/administration/#room-upgrades).\nBefore the upgrade it is strongly recommended to download any necessary poll data by exporting it as PDF.\nAfter the upgrade, the poll widget needs to be configured in the new room.\n\nIf you are using the widget as part of [NeoDateFix](https://github.com/nordeck/matrix-meetings), then\nplease refer to its [documentation](https://github.com/nordeck/matrix-meetings/blob/main/README.md#matrix-room-upgrades)\nabout room upgrades.\n\nMatrix room version 12 is supported from NeoChoice version [1.6.0](https://github.com/nordeck/matrix-poll/releases/tag/v1.6.0).\n\n## License\n\nThis project is licensed under [APACHE 2.0](./LICENSE).\n\nThe disclaimer for other OSS components can be accessed via the `/NOTICE.txt` endpoint.\nThe list of dependencies and their licenses are also available in a maschine readable format at `/usr/share/nginx/html/licenses.json` in the container image.\n\n## Sponsors\n\n\u003cp align=\"center\"\u003e\n   \u003ca href=\"https://www.dphoenixsuite.de/\"\u003e\u003cimg src=\"./docs/logos/dphoenixsuitelogo.svg\" alt=\"dPhoenixSuite\" width=\"20%\"\u003e\u003c/a\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n   \u003ca href=\"https://www.dataport.de/\"\u003e\u003cimg src=\"./docs/logos/dataportlogo.png\" alt=\"Dataport\" width=\"20%\"\u003e\u003c/a\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n   \u003ca href=\"https://www.nordeck.net/\"\u003e\u003cimg src=\"./docs/logos/nordecklogo.png\" alt=\"Nordeck\" width=\"20%\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThis project is part of the [dPhoenixSuite by Dataport](https://www.dphoenixsuite.de/).\n","funding_links":[],"categories":["[🔬 semantics](https://github.com/stars/ketsapiwiq/lists/semantics)"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnordeck%2Fmatrix-poll","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnordeck%2Fmatrix-poll","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnordeck%2Fmatrix-poll/lists"}