4Rs for PivotalTracker
This is a pure Javascript client-side application. It collects story data directly from the Pivotal Tracker API for analysis and charting in the browser.
This is the source repository, it is also from where the application is deployed and hosted with netlify.com.
Run the application here: https://fla.evendis.com/
Project information is retrieved with the project endpoint.
Example Request (curl)
export TOKEN='your Pivotal Tracker API token'
export PROJECT_ID='your Pivotal Tracker ID'
curl -X GET -H "X-TrackerToken: $TOKEN" "https://www.pivotaltracker.com/services/v5/projects/${PROJECT_ID}"
Sample Response:
{
"id":123456,
"kind":"project",
"name":"Sample Project",
"version":63000,
"iteration_length":4,
"week_start_day":"Monday",
"point_scale":"0,1,2,3,5,8",
"point_scale_is_custom":false,
"bugs_and_chores_are_estimatable":false,
"automatic_planning":true,
"enable_tasks":true,
"time_zone":{"kind":"time_zone","olson_name":"Asia/Singapore","offset":"+08:00"},
"velocity_averaged_over":4,
"number_of_done_iterations_to_show":12,
"has_google_domain":true,
"description":"Babylon and the FV Portal",
"enable_incoming_emails":true,
"initial_velocity":50,
"public":false,
"atom_enabled":false,
"project_type":"private",
"start_date":"2010-12-13",
"start_time":"2010-12-05T16:00:00Z",
"created_at":"2010-11-04T05:38:56Z",
"updated_at":"2016-04-07T01:44:41Z",
"account_id":999999,
"current_iteration_number":73,
"enable_following":true
}
Labels are retrieved with the labels endpoint.
Example Request (curl)
export TOKEN='your Pivotal Tracker API token'
export PROJECT_ID='your Pivotal Tracker ID'
curl -X GET -H "X-TrackerToken: $TOKEN" "https://www.pivotaltracker.com/services/v5/projects/${PROJECT_ID}/labels?date_format=millis"
Sample Response:
[
{"kind":"label","id":1111110,"project_id":123456,"name":"4rs - refine","created_at":1381480325000,"updated_at":1381480325000},
{"kind":"label","id":1111111,"project_id":123456,"name":"4rs - revise","created_at":1381480431000,"updated_at":1381480431000},
{"kind":"label","id":1111112,"project_id":123456,"name":"4rs - retire","created_at":1382510349000,"updated_at":1382510349000},
{"kind":"label","id":1111113,"project_id":123456,"name":"4rs - reveal","created_at":1381480356000,"updated_at":1381480356000},
...
]
Stories are retrieved with the stories endpoint.
Example Request (curl)
export TOKEN='your Pivotal Tracker API token'
export PROJECT_ID='your Pivotal Tracker ID'
curl -X GET -H "X-TrackerToken: $TOKEN" "https://www.pivotaltracker.com/services/v5/projects/${PROJECT_ID}/stories?date_format=millis&filter=story_type:feature,bug%20state:accepted,rejected,delivered&limit=1"
Sample Response:
[
{
"kind":"story",
"id":112345555,
"created_at":1460617898000,
"updated_at":1461146524000,
"estimate":1,
"story_type":"feature",
"name":"As an API user, I can query sites with pagination",
"current_state":"delivered",
"requested_by_id":1666666,
"url":"https://www.pivotaltracker.com/story/show/112345555",
"project_id":123456,
"owner_ids":[1666666,1666667],
"labels":[
{"kind":"label","id":6757190,"project_id":136709,"name":"4rs - revise","created_at":1381480325000,"updated_at":1381480325000}
],
"owned_by_id":1666666
},
...
]
Grunt is used to compile the less (CSS) and coffescript (Javascript) sources for the application into the app folder.
Grunt watch is setup to compile on any file changes:
grunt watch
The application is hosted with GitHub Pages, which makes it available for use directly from the GitHub repository.
The CNAME file links a custom domain to the application.
... are very welcome! Create issues, fork and send pull-requests as you would any other open source project hosted on GitHub.