{"id":15697189,"url":"https://github.com/shaula/restmine-scrum-board","last_synced_at":"2025-04-30T07:08:21.765Z","repository":{"id":143161132,"uuid":"90537554","full_name":"shaula/restmine-scrum-board","owner":"shaula","description":"SCRUM board based on the REST API of Redmine","archived":false,"fork":false,"pushed_at":"2017-11-29T06:30:25.000Z","size":454,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-30T07:08:16.813Z","etag":null,"topics":["redmine","redmine-client","rest-api","scrum-board"],"latest_commit_sha":null,"homepage":null,"language":"Vue","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/shaula.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":"2017-05-07T14:14:54.000Z","updated_at":"2023-10-16T09:47:41.000Z","dependencies_parsed_at":"2023-07-09T10:33:16.166Z","dependency_job_id":null,"html_url":"https://github.com/shaula/restmine-scrum-board","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaula%2Frestmine-scrum-board","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaula%2Frestmine-scrum-board/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaula%2Frestmine-scrum-board/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaula%2Frestmine-scrum-board/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shaula","download_url":"https://codeload.github.com/shaula/restmine-scrum-board/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251658208,"owners_count":21622820,"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":["redmine","redmine-client","rest-api","scrum-board"],"created_at":"2024-10-03T19:13:41.176Z","updated_at":"2025-04-30T07:08:21.743Z","avatar_url":"https://github.com/shaula.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RESTmine SCRUM Board\n\n\u003e A Scrum Board based on the REST API of Redmine.\n\n* built upon the REST-API of Redmine 3.3\n* requires set-up of two custom issue fields\n    * *Sprint Number*\n    * *Story Points*\n* client and server part\n    * hide the API-key server-side \u0026 do some pre-calculations (velocity)\n    * server is written on NodeJS, client is a [VueJS](https://vuejs.org/v2/guide/) application\n\n## Usage\n\n1. Copy [./config/config.dist.json](./config/config.dist.json) to [./config/config.json](./config/config.json)\n    * fill \"server\" sub-key of \"redmine\" settings (e.g. with https://redmine.acme.org)\n2. Enable Redmine REST API\n    1. click _Administration_ link on top left\n    2. go to tab _API_\n    3. _enable REST web service_\n3. Gather Redmine API key\n    1. click _My account_ link on top right\n    2. click _Show_ within the sidebar section _API access key_\n    3. copy the API key to [./config/config.json](./config/config.json)\n4. Setup custom _Sprint Number_ field\n    1. click _Administration_ link on top left\n    2. click _Custom fields_\n    3. create new custom field on type `Issues` (see [screenshot](./doc/custom-field-sprint-number.png))\n        * create as format `Integer`\n        * call it e.g. _Sprint number_\n        * choose all trackers\n    4. after pressing `Save`, copy the numeric ID from the URL to `customSprintNumberFieldId` of [./config/config.json](./config/config.json)\n5. Setup custom _Story Points_ field\n    1. click _Administration_ link on top left\n    2. click _Custom fields_\n    3. create new custom field on type `Issues` (see [screenshot](./doc/custom-field-story-points.png))\n        * create as format `Integer` or use format `Key/value list` (this would enable you to enforce certain Fibonacci numbers: 1, 2, 3, 5, 8, 13)\n        * call it e.g. _Story points_\n        * choose all trackers, except _Bug_ (only features receive an estimation)\n    4. after pressing `Save`, copy the numeric ID from the URL to `customStoryPointsFieldId` of [./config/config.json](./config/config.json)\n6. Configure _Issue statuses_ as required; possible changes might include:\n    * a new status `To Test`, `To Review` and/or `To Deploy`\n7. Run\n    * docker-compose build \u0026\u0026 docker-compose up\n8. Open: [http://localhost:8083](http://localhost:8083)\n\n## Screenshots\n\n### Issues Default View\n\nWithin [./config/config.json](./config/config.json) you can define the mapping from Redmine issue statuses to SCRUM Board statuses:\n ```json\n    ...\n    \"columns\": {\n      \"new\": {\n        \"abbr\": \"new\",\n        \"name\": \"New\",\n        \"statuses\": [\n          \"New\",\n          \"Accepted\",\n          \"Reopened\",\n          \"Feedback Provided\"\n        ]\n      },\n      ...\n```\n![Screenshot](doc/issues.png)\n\n### Issues Project View\n\nAlternative view where each Redmine project is represented as horizontal swimlane.\n\n![Screenshot](doc/issues-project-view.png)\n\n### Distribution\n\nGives you various statistics about workload distribution.\n\n![Screenshot](doc/distribution.png)\n\n### Velocity\n\nHistory of development speed.\n\n![Screenshot](doc/velocity.png)\n\n### Settings\n\nChange the Sprint number.\n\n![Screenshot](doc/settings.png)\n\n## HTTPS\n\nIf run behind a HTTPS terminator, you have to offload the secure WebSocket (ws://) connection as well. On Nginx you can this via:\n```\nlocation /ws/ {\n    // this proxies the wss:// connection to ws://\n    proxy_pass http://127.0.0.1:8083;\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection \"upgrade\";\n}\n```\n\n## Development\n\n* ```yarn install``` - fetch dependencies\n* ```yarn dev-server``` - runs [./src/server.js](server.js) at port 8080\n    * constant API_URL is defined in [./build/webpack.dev.conf.js](./build/webpack.dev.conf.js)\n    * ...and used in [./src/client.js](./src/client.js)\n* ```yarn dev-client``` - runs a Webpack-Dev-Server with Hot Reload\n\n## ToDo\n\n* Issues tab\n    * drag \u0026 drop issues across status\n    * drag \u0026 drop users onto issues\n* Distribution tab\n    * show doneRatio - this is complicated as the `spent_hours` field is only available in issues-detail view, but not within issues-list view","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshaula%2Frestmine-scrum-board","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshaula%2Frestmine-scrum-board","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshaula%2Frestmine-scrum-board/lists"}