npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@beauraines/sprint-tracker

v0.6.37

Published

Database and R visualizations to track sprint performance

Downloads

288

Readme

Sprint Tracker

Collects sprint outcome information and generates a visualization of sprint outcomes.

Visualizations

Using the visualization command, you can generate a sprint outcome and velocity visualization. An example is shown below, with sprint names across the bottom. For each sprint, it compares the commitment and delivered story points, as well as some information about stories added and removed from the sprint.

Command Information

sprint-tracker <cmd> [args]

Commands:
  sprint-tracker addOutcome        Menu driven process to add outcomes to a
                                   sprint
  sprint-tracker addProject        Prompts to add a new project to the database
  sprint-tracker addSprint         Prompts to add a new sprint to an existing
                                   project
  sprint-tracker config            Creates a config file, prompting for required
                                   inputs
  sprint-tracker getSprint         Gets sprint details
  sprint-tracker visualizations    Creates Feature Team visualizations with R.
                                   Must have docker, rstudio-tidyverse container
                                   and more installed
  sprint-tracker create-database   Creates and initializes the empty database
                                   specified in the config
  sprint-tracker upgrade-database  Upgrades database with new structure
  sprint-tracker completion        Outputs bash/zsh-completion shortcuts for
                                   commands and options to add to .bashrc or
                                   .bash_profile

Options:
  --version  Show version number                                       [boolean]
  --help     Show help                                                 [boolean]

Dependencies

This CLI application relies on a local sqlite database, R including tidyverse to function. Installation of these dependencies is outside of the scope of this project as the steps vary by OS.

On Mac, these can be installed with homebrew.

brew install sqlite r

Install the tidyverse packages

  1. Start R with the R command
  2. Install tidyverse install.packages("tidyverse")
  3. Pick a close mirror from the list provided
  4. A very long compile process will run, approximately 20 minutes depending upon your hardware.
  5. Once it is installed quit R with q() and respond to the prompts to not save your workspace.

Installation Instructions

The sprint-tracker can be installed with npm -g i @beauraines/sprint-tracker to be used locally. Once you've installed it, follow the General Usage instructions. If you're going to contribute to the package, see Installation and Setup for Development.

General Usage

  1. Update the config file with the path to the database sprint-tracker config. The database doesn't need to exist yet. This step only needs to be done the first time.
  2. Create the database and run the migrations sprint-tracker create-database. This step only needs to be done the first time.
  3. Run sprint-tracker addProject to add a project to the database. This step can be repeated as new projects are started.
  4. Add the first sprint with sprint-tracker addSprint optionally, adding the sprint commitment. This step can be repeated for subsequent sprints.
  5. At the end of the sprint, record sprint outcomes sprint-tracker addOutcome. This will allow you to log information about stories and points completed, committed, pulled forward, carried over, and bugs.
  6. Generate the cumulative sprint outcomes visualization with sprint-tracker visualizations.

Configuration

A configuration file ~/sprintTracker.json is required with the full path to your tracker database

{
    "database":"/Users/beauraines/projects/sprint-tracker/tracker.db"
}

Tracking Outcomes

Project

This table will store project master data.

Sprint

Sprint details including the dates and original commitment. The original commitment will not change and can be sourced from the Jira "Velocity Report" for the sprint.

Non-working days and PTO will be recorded to be able to normalize Sprints with different durations.

Sprint Outcomes

  1. Commitment: Initial sprint commitment
  2. Delivered: Work completed this sprint
  3. Unplanned - Story: All unplanned work brought into the sprint, whether completed or not
  4. Unplanned - Bug: Unplanned work without a pre-existing story that was deemed critical enough to add to the sprint
  5. Descoped: Committed work, removed from the sprint
  6. Carryover: Incomplete, started or un-started, work from this sprint, assumed that it will carry over to the next sprint
  7. Carryover - External: Work that was carried over due to blockers external to the scrum team. Use of this is optional, as an agile team should be fully self-sufficient.

Installation and Setup for Development

  1. Clone the repository
  2. Ensure you have sqlite3 and docker installed. See Dependencies.
  3. Install npm dependencies npm i
  4. Globally install the sprint tracker npm -g i
  5. Follow the General Usage instructions.

ERD

See the standalone ERD document

Generating Visualizations with R and Docker

If you choose to not have a local R install, you can use R in a docker container, manually. There are several R scripts included in the project repository, more than just the sprint outcomes. They can be run from the command line using docker and the rocker/tidyverse image as shown below.

# PROJECT_DIR must have trailing slash
PROJECT_DIR=/Users/beauraines/projects/
IMAGE=rocker/tidyverse
docker run -it --rm -v ${PROJECT_DIR}:/home/rstudio/projects/ ${IMAGE} su -c 'Rscript /home/rstudio/projects/sprint-tracker/R/sprintOutcomes.R' rstudio

Roadmap

  1. ~~Build local database using sqlite3~~
  2. ~~Script visualizations, possibly with R, graph-cli, chartsjs, PowerBI, or AWS QuickSight~~
  3. Backlog health tracking
  4. Write API for adding data
  5. Write API for getting visualizations
  6. ~~Create database migrations~~
  7. Deploy to cloud
  8. Add sprint metrics
    1. Average velocity over the life of the project
    2. Recent average velocity
    3. 90% confidence range. See https://resources.scrumalliance.org/Article/its-target-forecast
    4. Daily points per developer

Contributing

Please feel free to contribute by opening a pull request!