Sprint planner considering JIRA issues and google calendar meetings schedule.

Overview

Sprint planner

Sprint planner is a Python script for planning your Jira tasks based on your calendar availability.

Installation

Use the package manager pip to install requirements.

python3 -m venv .venv
python3 -m pip install -r requirements.txt

For Google Calendar integration:

  1. Create Google Cloud Platform project with the Google Calendar API enabled. To create a project and enable an API, refer to Create a project and enable the API
  2. Create authorization credentials for a desktop application. To learn how to create credentials for a desktop application, refer to Create credentials.
  3. Save file with credentials as credentials.json in main project folder.

For Jira integration:

Set JIRA_TOKEN, JIRA_SERVER , JIRA_USER with proper values. See Environment variables section for more details.

Usage

Plan sprint work based on JIRA tickets and available calendar time

It generates sprint plan based on your calendar and JIRA tickets.

python3 plan_sprint.py $env_file

$env_file is optional parameter to be used if there is another path to env file than default .env

Optimise focus time based on your calendar

It generates optimised list of workload you can do, without being distracted by any meeting during an issue work.

python3 optimise_focus_time.py $env_file

$env_file is optional parameter to be used if there is another path to env file than default .env

Known issues

  • problems with GCal events which lasts more than one day
  • problems might occurs if Google Calendar events starts before work hours or end after work hours

Environment variables

Jira

  • JIRA_TOKEN - User authorization token, can be generated here.
  • JIRA_SERVER - Your Jira server name i.e. https://organization.atlassian.net/.
  • JIRA_USER - Your user email.
  • JIRA_PROJECT - Project ID to fill default JQL query and to get start/end dates from current sprint.
  • JIRA_ESTIMATE_FIELD - Name of the field with estimation points, default value: timeoriginalestimate.
  • JIRA_ISSUES_JQL - Custom JQL query for fetching issues from Jira.
  • JIRA_PRIORITY_ORDER - Set to DESC if your most important tasks has greater priority id than less important ones.

Google

  • GOOGLE_CALENDAR_ID - ID of Google Calendar you want to use, default set to primary
  • GOOGLE_ATTENDEE_EMAIL - Email address of user to check if event is accepted for them. Default value None which means that all events will be loaded.

Calendar parameters

  • WORKING_HOURS_FROM - Your start work hour, default value 9.
  • WORKING_HOURS_TO - Your end work hour, default value 17.
  • WORKING_DAYS_START_WEEKDAY - First day of working week, default value 0 which means Monday.
  • WORKING_DAYS_END_WEEKDAY - Last day of working week, default value 5 which means Friday.
  • WITH_BREAK - Include break timeslot each day. Default value True
  • BREAK_TIME - Length of break in minutes. Default value 30
  • BREAK_AFTER - Minimum hour in day for the break. Default value 13

Algorithm parameters

  • TIME_PER_ESTIMATION_POINT - How long it should take to do one estimation point. Default value None which means that value will be counted proportionally to free time.
  • ALGORITHM - Possible values: NAIVE_GREEDY, NAIVE_GREEDY_WITH_SPLIT, Default value: NAIVE_GREEDY_WITH_SPLIT
  • MIN_CONSIDERABLE_SLOT_TIME - Dont plan work for slots less than MIN_CONSIDERABLE_SLOT_TIME minutes. Defaults to 0

Focus optimisation parameters

  • FOCUS_TIME_CALENDAR_START - Start date for focus optimisation in %Y-%m-%dT%H:%M:%S.%fZ format (i.e. 2021-12-10T00:00:00.000Z)
  • FOCUS_TIME_CALENDAR_END - End date for focus optimisation in %Y-%m-%dT%H:%M:%S.%fZ format (i.e. 2021-12-10T00:00:00.000Z)
  • FOCUS_TIME_STORY_POINTS_CAPACITY - Total Story Points to use in range

Future improvements

  • Introduce more complex algorithms to plan the sprint
  • Support for planning multiple developers (whole team) at once
  • Consider time cost for regaining focus after each meeting

License

MIT

Owner
Apptension
We are a fellow custom software development company for Startups, Investors and Agencies.
Apptension
A guide for using Bootstrap 5 classes in Dash Bootstrap Components V1

dash-bootstrap-cheatsheet This handy interactive cheatsheet makes it easy to use the Bootstrap 5 classes with your Dash app made with the latest versi

10 Dec 22, 2022
Altair extension for saving charts in a variety of formats.

Altair Saver This packge provides extensions to Altair for saving charts to a variety of output types. Supported output formats are: .json/.vl.json: V

Altair 85 Dec 09, 2022
The repository is my code for various types of data visualization cases based on the Matplotlib library.

ScienceGallery The repository is my code for various types of data visualization cases based on the Matplotlib library. It summarizes the code and cas

Warrick Xu 2 Apr 20, 2022
Matplotlib JOTA style for making figures

Matplotlib JOTA style for making figures This repo has Matplotlib JOTA style to format plots and figures for publications and presentation.

JOTA JORNALISMO 2 May 05, 2022
This repository contains a streaming Dataflow pipeline written in Python with Apache Beam, reading data from PubSub.

Sample streaming Dataflow pipeline written in Python This repository contains a streaming Dataflow pipeline written in Python with Apache Beam, readin

Israel Herraiz 9 Mar 18, 2022
Create SVG drawings from vector geodata files (SHP, geojson, etc).

SVGIS Create SVG drawings from vector geodata files (SHP, geojson, etc). SVGIS is great for: creating small multiples, combining lots of datasets in a

Neil Freeman 78 Dec 09, 2022
100 data puzzles for pandas, ranging from short and simple to super tricky (60% complete)

100 pandas puzzles Puzzles notebook Solutions notebook Inspired by 100 Numpy exerises, here are 100* short puzzles for testing your knowledge of panda

Alex Riley 1.9k Jan 08, 2023
Voilà, install macOS on ANY Computer! This is really and magic easiest way!

OSX-PROXMOX - Run macOS on ANY Computer - AMD & Intel Install Proxmox VE v7.02 - Next, Next & Finish (NNF). Open Proxmox Web Console - Datacenter N

Gabriel Luchina 654 Jan 09, 2023
Gesture controlled media player

Media Player Gesture Control Gesture controller for media player with MediaPipe, VLC and OpenCV. Contents About Setup About A tool for using gestures

Atharva Joshi 2 Dec 22, 2021
Arras.io Highest Scores Over Time Bar Chart Race

Arras.io Highest Scores Over Time Bar Chart Race This repo contains a python script (make_racing_bar_chart.py) that can generate a csv file which can

Road 2 Jan 16, 2022
Python package that generates hardware pinout diagrams as SVG images

PinOut A Python package that generates hardware pinout diagrams as SVG images. The package is designed to be quite flexible and works well for general

336 Dec 20, 2022
a python function to plot a geopandas dataframe

Pretty GeoDataFrame A minimum python function (~60 lines) to draw pretty geodataframe. Based on matplotlib, shapely, descartes. Installation just use

haoming 27 Dec 05, 2022
This is a place where I'm playing around with pandas to analyze data in a csv/excel file.

pandas-csv-excel-analysis This is a place where I'm playing around with pandas to analyze data in a csv/excel file. 0-start A very simple cheat sheet

Chuqin 3 Oct 05, 2022
Standardized plots and visualizations in Python

Standardized plots and visualizations in Python pltviz is a Python package for standardized visualization. Routine and novel plotting approaches are f

Andrew Tavis McAllister 0 Jul 09, 2022
Define fortify and autoplot functions to allow ggplot2 to handle some popular R packages.

ggfortify This package offers fortify and autoplot functions to allow automatic ggplot2 to visualize statistical result of popular R packages. Check o

Sinhrks 504 Dec 23, 2022
Render tokei's output to interactive sunburst chart.

Render tokei's output to interactive sunburst chart.

134 Dec 15, 2022
649 Pokémon palettes as CSVs, with a Python lib to turn names/IDs into palettes, or MatPlotLib compatible ListedColormaps.

PokePalette 649 Pokémon, broken down into CSVs of their RGB colour palettes. Complete with a Python library to convert names or Pokédex IDs into eithe

11 Dec 05, 2022
Insert SVGs into matplotlib

Insert SVGs into matplotlib

Andrew White 35 Dec 29, 2022
Squidpy is a tool for the analysis and visualization of spatial molecular data.

Squidpy is a tool for the analysis and visualization of spatial molecular data. It builds on top of scanpy and anndata, from which it inherits modularity and scalability. It provides analysis tools t

Theis Lab 251 Dec 19, 2022
Python script to generate a visualization of various sorting algorithms, image or video.

sorting_algo_visualizer Python script to generate a visualization of various sorting algorithms, image or video.

146 Nov 12, 2022