A Scrum Board based on the REST API of Redmine.
- built upon the REST-API of Redmine 3.3
- requires set-up of two custom issue fields
- Sprint Number
- Story Points
- client and server part
- hide the API-key server-side & do some pre-calculations (velocity)
- server is written on NodeJS, client is a VueJS application
- Copy ./config/config.dist.json to ./config/config.json
- fill "server" sub-key of "redmine" settings (e.g. with https://redmine.acme.org)
- Enable Redmine REST API
- click Administration link on top left
- go to tab API
- enable REST web service
- Gather Redmine API key
- click My account link on top right
- click Show within the sidebar section API access key
- copy the API key to ./config/config.json
- Setup custom Sprint Number field
- click Administration link on top left
- click Custom fields
- create new custom field on type
Issues
(see screenshot)- create as format
Integer
- call it e.g. Sprint number
- choose all trackers
- create as format
- after pressing
Save
, copy the numeric ID from the URL tocustomSprintNumberFieldId
of ./config/config.json
- Setup custom Story Points field
- click Administration link on top left
- click Custom fields
- create new custom field on type
Issues
(see screenshot)- create as format
Integer
or use formatKey/value list
(this would enable you to enforce certain Fibonacci numbers: 1, 2, 3, 5, 8, 13) - call it e.g. Story points
- choose all trackers, except Bug (only features receive an estimation)
- create as format
- after pressing
Save
, copy the numeric ID from the URL tocustomStoryPointsFieldId
of ./config/config.json
- Configure Issue statuses as required; possible changes might include:
- a new status
To Test
,To Review
and/orTo Deploy
- a new status
- Run
- docker-compose build && docker-compose up
- Open: http://localhost:8083
Within ./config/config.json you can define the mapping from Redmine issue statuses to SCRUM Board statuses:
...
"columns": {
"new": {
"abbr": "new",
"name": "New",
"statuses": [
"New",
"Accepted",
"Reopened",
"Feedback Provided"
]
},
...
Alternative view where each Redmine project is represented as horizontal swimlane.
Gives you various statistics about workload distribution.
History of development speed.
Change the Sprint number.
If run behind a HTTPS terminator, you have to offload the secure WebSocket (ws://) connection as well. On Nginx you can this via:
location /ws/ {
// this proxies the wss:// connection to ws://
proxy_pass http://127.0.0.1:8083;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
yarn install
- fetch dependenciesyarn dev-server
- runs ./src/server.js at port 8080- constant API_URL is defined in ./build/webpack.dev.conf.js
- ...and used in ./src/client.js
yarn dev-client
- runs a Webpack-Dev-Server with Hot Reload
- Issues tab
- drag & drop issues across status
- drag & drop users onto issues
- Distribution tab
- show doneRatio - this is complicated as the
spent_hours
field is only available in issues-detail view, but not within issues-list view
- show doneRatio - this is complicated as the