Giter Club home page Giter Club logo

trello-kanban-analysis-tool's Introduction

Build Status

ā˜ļø I no longer maintain this project as I'm not using Trello anymore. It could change in the future, but no guarantee. If you'd like to contribute, reach me out [email protected]. Otherwise, feel free to fork.

TKAT (Trello Kanban Analysis Tool)

A JavaScript library to analyze Kanban metrics from a Trello board.

Here is the online application.

TKAT - Cycle Times TKAT - CFD

What it is

This started as a side project for practicing functional programming using:

To make this side project interesting, I aimed to ease manual repetitive work: generating Cumulative Flow Diagram for a Kanban-like Trello board.

If you are curious about the context and Trello-Kanban stuff, I wrote a whole post about it.

How to use it

As a user, you can simply go with the online application.

If you want to run it locally, let's suppose you've got node.js and npm installed.

  • Clone the repo:Ā git clone git://github.com/nicoespeon/trello-kanban-analysis-tool.git
  • Install dependencies: npm install
  • Ensure you've got brunch installed globally: npm install -g brunch
  • Run brunch watch --server to get a running application

Available commands

Basically, all brunch commands.

You will probably want to use brunch watch --server to serve the app locally.

In case of doubt, you can run npm test to check if anything is wrong with source code.

npm run lint

Lint JavaScript through ESLint.

npm run unit-test

Launch unit tests with Babel tape runner.

npm run unit-test-diff

Launch unit tests through tap-diff reporter.

Contributing

That would be amazing šŸ¤˜

Please have a look at the CONTRIBUTING.md file before you do so.

Versioning

This project uses SemVer as a guideline for versioning.

That mean releases will be numbered with <major>.<minor>.<patch> format, regarding following guidelines:

  • Breaking backward compatibility bumps the <major> (and resets the <minor> and <patch>)
  • New additions without breaking backward compatibility bumps the <minor> (and resets the <patch>)
  • Bug fixes and misc. changes bumps the <patch>

Inspiration & Readings

Organisational things

Technical stuff

Copyright and License

Copyright (c) 2016 Nicolas CARLO under the MIT license.

šŸ¤” What does that mean?

trello-kanban-analysis-tool's People

Contributors

nicoespeon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

trello-kanban-analysis-tool's Issues

Move to Typescript

Since Cycle.js v7, developers are strongly encouraged to develop app with Cycle + Typescript.

Plus, that would make sense with the typed approach that lies inside source code comment.

The main deal here is to replace babel with Typescript, integrating it with brunch.

Exclude cards based on label

First off, this is a great CFD tool! Good work,

The way we have our board setup in Trello we're using a card at the top of each list to provide a definition of done for that list. Those cards never move and provide our designers/developers with the necessary criteria for when a card is ready to be pulled. If I could label those cards with some kind of "readme" label and be able to select cards to exclude based on that label in TKAT it would likely solve the issue of those cards being counted against cumulative flow and cycle time, throwing off the numbers.

Add standard deviation

Hi there,
Great tool! We'd like to calculate the standard deviation for our lead/cycle time and work towards reducing it over time. It would make it easier for us to tell our stakeholders how long a task takes on average.
Thanks!

Persist data with localStorage

Data to be stored to ease people's life:

  • Selected board
  • Selected lists
  • Selected period

To avoid fetching Trello anytime we refresh the app, we could also store data from API when we get it.

Handle case where list is moved out / in the board

Use case

  1. Move a list full of cards out of the board.
  2. Archive an item from the list
  3. Move this list back into the board
  4. Enlarge the selected period to go beyond the creation date of card you archived
  5. CFD is not what you expect, you should see negative values appears

Here is an example in which the Backlog was moved and empty in another board before we took it back to the one we're analyzing:

capture d ecran 2016-06-30 a 07 53 49

Make Trello Driver returns hot observable to simplify application code

http://reactivex.io/documentation/operators/refcount.html

The thing is we use .publish() and .connect() to avoid duplication for each subscriber of Trello Drivers = make the Trello observable hot instead of cold.
The idea will be to use .share() from the driver if it could simplify the application code.

I need to have a closer look. The WSĀ driver example just make me thought about it:Ā http://cycle.js.org/drivers.html


NB:Ā xstream might solve our use case here.

Selected lists mess up when you select another board

Hi,
I just saw a little bug.
When I change the active Board I have the same list on _Work begin_and Work end.
If I clich on Work end the data aren't loaded.
When I click on the button refresh data I don't obtain new datas.

capture d ecran 2016-06-07 a 09 15 39
capture d ecran 2016-06-07 a 09 15 46

Enhance newcomers UX āˆ’ Trello auth

When you first come to the hosted app, Trello authentication tries to pop up to request you permissions. Meanwhile, the whole page is blank.

Unfortunately, user may block pop-ups by default. Without any visible information, he may not noticed that a pop-up has been blocked āˆ’ or may not understand why āˆ’ and simply leave, thinking it is broken.

I faced this issue once and I get a feedback on that very issue āˆ’ someone thinking the app didn't work.

Todos

  • Render default view with a "Connect to Trello" button
  • Refactor the app to kick-off Cycle.run() from the beginning, calling Trello authentication on button click
  • Handle refresh, when user is already connected to Trello āˆ’ don't ask him to click on the connect button everytime

"Refresh data" button doesn't work as expected

This button should fetch Trello data without having to reload the whole page.
But it looks like it doesn't do its job.

Scenario

  1. load the app, selecting a board and current month period
  2. check "Preview tomorrow CFD"
  3. update the board you're monitoring (move / create cards)
  4. click on the "Refresh data" button

Expected behavior

Data should be refreshed and the graph updated.

Current behavior

Nothing happens.
But if we reload the app, then all is correct: the refresh button doesn't do its job!

Sum up multiple lanes to one

Hi,

thanks for this awesome tool. It seems to help me and my team a lot.

One feature would be actually pretty great. We use several lanes for done-cards (one per sprint). It would be awesome if you could somehow select several lanes and have them collapsed and sum up to only one area on the CFD. One step further, you could also go for a separate board, where all done cards are moved to.

What do you think?

Cheers,
BaSche

Implement percentile 50%, 85% and 95% on lead time

Some times we need to analyze the percentiles to have more idea about Team health, for example, the median sometimes is dangerous because if you have activities that the team spent 1 day and other activities the team spent 10 or more days the median shows oh the team spent 5 days to finish a task. But if you show the percentile you will see that 95% of activities the team spent 10 days or more and this is so important to help the team improve they predictability.

add other metrics

Hi,

It could be a good Idea to add more metrics such as WIP in the Kaban Analysis Tool.

For example I have 5 Columns (To do, Sprint Planning, Doing, Waiting, Done).
Directly on the Graph it could be great to have a way to calculate the work in progress.
In my example the work in progress is the sum of 2 columns (Doing, Waiting).

Best regards!
Bastien

Support story points

I know that story points aren't really a thing in Kanban, but this tool is also already useful for Scrum-based teams. Supporting story points as the burndown metric, rather than number of cards, would be fantastic. Typical story point patterns in Trello cards is typically noted by square brackets at the end of the card title, ex:

Refactor API Handler [3]

In the example above, 3 story points were marked as consumed on the card.

Prevent Trello from returning HTTPĀ 429Ā (Rate limit exceeded)

Trello APIĀ has a rate limit of 300 requests per 10 seconds for each API key and no more than 100 requests per 10 second interval for each token:Ā http://help.trello.com/article/838-api-rate-limits

When calculating Lead Time, TKATĀ lists cards which information is missing over the selected period to retrieve them. Doing so, it might exceed the rate limit.
Same thing could happen if user switch between boards quickly.

Trello Driver should handle this case since it seems to break the observable.

Solutions I got in mind:

  • use Trello's webhooks that are not limited āˆ’ it seems to be the use case for using them. Unfortunately, that looks much more like monitoring than retrieving past history.
  • use Trello's recursion advice and request all of board actions once. Problem is that is not lazy at all. Also, it would require solving #4.
  • throttle / buffer / delay requests in some way to prevent the error from happening
  • use .retryWhen() operator to catch errors when they happen and retry after a decent delay. Looks like there is no such thing with RxJS.

What we need is a way to buffer requests to consume them within delay limitations from Trello API. This just sounds like pausableBuffered: http://rxmarbles.com/#pausableBuffered

We should find a way to pause the input stream, buffering requests when we reach the limit within the defined intervalā€¦ Then resume the stream as long as limitation is respected (technically, requests could pass every second while the 10 last seconds don't produce more than 100 requests).

To dig it deeper: http://reactivex.io/documentation/operators/backpressure.html


The thing is: Trello requests input is an observable which items are arrays containing cards IDs, each of which will produce a request.

---A----B-------C-----D---->

A = [ "574545f1a9b62eb12d06d61f", "5702ea4ae9363783899936f2", "56ef9c5b204ac6983bb49bb2" ]

There has to be some kind of transformation through observable to use the technique mentioned. Or to find a workaround.

Don't update data on each datepicker keystroke

When you type a date, data gets refresh between 2 keyboard strokes, which is not desired and make it lag.

2 possible solutions:

  • debounce datepickers streams so it would wait enough between 2 keystrokes
  • listen to another event than the update one (kind of a mouseout event)

Export data to CSV

Someone suggested to be able to export graph data into a CSV so we can replicate the report in spreadsheets.


What we would need:

  • A stream of button clicks.
  • A stream containing information to download.
  • withLatestFrom to retrieve latest value whenever there is a click.
  • Map over resulted stream to preformat data to be the input of the driver.
  • A driver that deals with CSV conversion and download, given a stream of pre-formatted arrays.
return {
  // ā€¦ drivers
  exportToCsv: Observable.withLatestFrom(
    clicks$,
    trelloData$.map(parseToCsvData),
    (clicks, data) => data
  )
}

Add README

Explain:

  • what it is
  • what technologies / tools does it use
  • how to use
  • contribution, copyright and semver stuff

Count items in checklists inside cards

We find it useful to maintain part of the backlog inside cards as checklists. The items are then turned into cards and moved through the lists. Would it be useful to (optionally) count checklist items in side cards?

Exclude weekends and holidays

Hello,

This is a cool project, I like it very much. I'm currently using this to track our development project. One issue I have is that the cycle time and lead time calculation includes weekends and holidays. This makes our completion forecast a little bit off.

I'm tinkering with the code, and I think we could have some options to adjust the date related calculations. There is a library https://github.com/kalmecak/moment-business-days which fits quite nicely into moment.js.

I'd like to hear your thoughts about it. Thank you very much.

Calculate Throughput

Throughput = N cards that completed cycle / Days in period

Lead Time = WIP / Throughput

issue during installation

Hi,

Thank you very much for you Tool. It's exactly what I'm looking for.
I have an issue during the installation:

npm ERR! 404 Not Found
npm ERR! 404
npm ERR! 404 'cycle/core' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it
npm ERR! 404 It was specified as a dependency of 'tkat'
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, or http url, or git url.

npm ERR! System Darwin 14.5.0
npm ERR! command "node" "/usr/local/bin/npm" "install"
npm ERR! cwd /Applications/MAMP/htdocs/trello-kanban-analysis-tool
npm ERR! node -v v0.10.32
npm ERR! npm -v 1.4.28
npm ERR! code E404
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Applications/MAMP/htdocs/trello-kanban-analysis-tool/npm-debug.log
npm ERR! not ok code 0

Do you have any Idea how to fix this?
Thank you very much.

Cycle time changes based on "Work Begins" select

I'll try to describe this issue first:

If I have a board with 3 columns: "To Do", "Doing", "Done"
And I want to know the cycle time between "Doing" and "Done"
When I select "Doing" as the Work Begins column
Then the cycle time shown in the table for "Doing -> Done" is incorrect
If I change the Work Begins column to "To Do"
Then the cycle time shown in the table for "Doing -> Done" is the correct value

I've taken a cursory look through the code, and I can't see a problem just yet; I may dig deeper and submit a PR. I love this application, and use it regularly!

Refactor Trello Driver to match standards

I guess my current implementation of the Trello Driver is not standard, according to the docs:

The output of the driver function can either be a single Observable or a queryable collection of Observables. [ā€¦]

In some cases it is necessary to output a queryable collection of Observables, instead of a single one. A queryable collection of Observables is essentially a JavaScript object with a function used to choose a particular Observable based on a parameter, e.g. get(param).

āˆ’ http://cycle.js.org/drivers.html

Let's think on that and refactor: advices and suggestions are welcome!

I might also extract the Driver into its own repo if it happen to be relevant.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.