• This repository has been archived on 26/Apr/2021
  • Stars
    star
    222
  • Rank 179,123 (Top 4 %)
  • Language
    Ruby
  • License
    GNU General Publi...
  • Created almost 11 years ago
  • Updated about 9 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Use GitHub to Track Time and Budgets for your Development Projects(and really anything else you use GitHub for) - Ruby app that analyzes GitHub Issue Comments, Milestones, and Code Commit Messages for Time Tracking and Budget Tracking information

GitHub-Time-Tracking

Join the chat at https://gitter.im/StephenOTT/GitHub-Time-Tracking

endorse

Ruby app that analyzes GitHub Issue Comments, Milestones, and Code Commit Messages for Time Tracking and Budget Tracking information.

GitHub-Time-Tracking is designed to offer maximum flexibility in the way you use GitHub to track your time and budgets, but provide a time and budget syntax that is intuitive to use and read. Any emoji that is used was specifically chosen to be intuitive to its purpose. Of course you can choose your own set of Emoji if you do not like the predefined ones.

If you like GitHub-Time-Tracking, be sure to check out GitHub-Analytics: https://github.com/StephenOTT/GitHub-Analytics

News

March 1, 2014 Sinatra support has been added and mongo aggregation queries have started to be produced for MVP development. Time Tracker will be turned into a gem and some code will be refactored to better support the gem. The Sinatra App is currently part of this repo, but will be pushed into a separate repo sometime in the future. The app will use basic bootstrap to provide a theme for the interface and base queries will be support to provide time and budget totals for issues, milestones, labels, and commit messages(+commit comments). The Sinatra app is fully functioning with GitHub OAuth2 support and will download your repo issue, milestone, and commit data (that has time and budget information) into MongoDB. Stay Tuned!

Feb 23, 2014: Support has been re-added for tasks, milestones, and code commits, and code commit comments. The code still needs some cleanup in term of OO based structure, but it is fully functioning. All features listed below are supported. I will be updating the diagrams and images of the improved data structure in the next few days as time permits.

Feb 19, 2014: Large changes are occurring with Time Tracker to make it more modular. All old code will be kept in the "Old Files to be Processed" folder until all functions have been transferred into the new modular structure. This will be a multi-phase transition so changes will occur. As of Feb 19, 2014, the Issue Time Tracking with NonBillable Hours support has been provided along with download into MongoDB. Next will be to get Issue Budgets working followed by Milestone Budgets, followed by a rebuild of the Advanced Label support which covers creating multiple label levels/categories. The Final stage will be the implementation of the Task level time and budget tracking. If anyone has a need for a feature sooner rather than later, please post the request in the issue queue. See the 0.5 Branch for the code changes


How to run the Web App:

  1. Register/Create a Application at https://github.com/settings/applications/new. Set your fields to the following:

    1.1. Homepage URL: http://localhost:9292

    1.2. Authorization callback URL: http://localhost:9292/auth/github/callback

    1.3. Application Name: GitHub-Time-Tracking or whatever you want to call your application.

  2. Install MongoDB (typically: brew update, followed by: brew install mongodb)

  3. cd into the app folder and run the following commands in the app folder:

    3.1. Run mongod in terminal

    3.2. Open a second terminal window and run: bundle install

    3.3.GITHUB_CLIENT_ID="YOUR CLIENT ID" GITHUB_CLIENT_SECRET="YOUR CLIENT SECRET" bundle exec rackup Get the Client ID and Client Secret from the settings of your created/registered GitHub Application in Step 1.

  4. Go to http://localhost:9292

NOTE: The web app is under development at the moment, so while the code will always be executable for demo purposes, there are many links that have hard coded variables at the moment. So if you want to test out on your own repo you will have to make a few modifications.

--

Minimal Viable Product: Time Tracking Web App

Some Initial same images for first iteration of development

screen shot 2014-03-06 at 1 17 38 am

screen shot 2014-03-06 at 1 17 50 am

screen shot 2014-03-06 at 1 17 54 am

screen shot 2014-03-06 at 1 17 29 am

screen shot 2014-03-06 at 1 17 21 am

screen shot 2014-03-06 at 1 19 39 am

Time Tracking Usage Patterns

Logging Time for an Issue

Logging time for a specific issue should be done in its own comment. The comment should not include any data other than the time tracking information. NOTE: The Body of the Issue (the text you write when you first open the issue), is not a comment. You must make a comment for a time-comment to function. The logic is that if you were to make a issue, the opening of the issue would contain the information about the issue, and then subsequent comments would have time-comments.

Examples

  1. :clock1: 2h # => πŸ• 2h

  2. :clock1: 2h | 3pm # => πŸ• 2h | 3pm

  3. :clock1: 2h | 3:20pm # => πŸ• 2h | 3:20pm

  4. :clock1: 2h | Feb 26, 2014 # => πŸ• 2h | Feb 26, 2014

  5. :clock1: 2h | Feb 26, 2014 3pm # => πŸ• 2h | Feb 26, 2014 3pm

  6. :clock1: 2h | Feb 26, 2014 3:20pm # => πŸ• 2h | Feb 26, 2014 3:20pm

  7. :clock1: 2h | Installed security patch and restarted the server. # => πŸ• 2h | Installed security patch and restarted the server.

  8. :clock1: 2h | 3pm | Installed security patch and restarted the server. # => πŸ• 2h | 3pm | Installed security patch and restarted the server.

  9. :clock1: 2h | 3:20pm | Installed security patch and restarted the server. # => πŸ• 2h | 3:20pm | Installed security patch and restarted the server.

  10. :clock1: 2h | Feb 26, 2014 | Installed security patch and restarted the server. # => πŸ• 2h | Feb 26, 2014 | Installed security patch and restarted the server.

  11. :clock1: 2h | Feb 26, 2014 3pm | Installed security patch and restarted the server. # => πŸ• 2h | Feb 26, 2014 3pm | Installed security patch and restarted the server.

  12. :clock1: 2h | Feb 26, 2014 3:20pm | Installed security patch and restarted the server. # => πŸ• 2h | Feb 26, 2014 3:20pm | Installed security patch and restarted the server.

  • Dates and times can be provided in various formats, but the above formats are recommended for plain text readability.

  • Any GitHub.com supported clock Emoji is supported: "πŸ•œ", "πŸ•š", "πŸ•§", "πŸ•’", "πŸ•Ÿ", "πŸ••", "πŸ•’", "πŸ•˜", "πŸ•™", "πŸ•¦", "πŸ•‘", "πŸ•ž", "πŸ•”", "πŸ•‘", "πŸ•—", "πŸ•€", "πŸ•", "πŸ•₯", "πŸ•›", "πŸ•", "πŸ•“", "πŸ• ", "πŸ•–", "πŸ•£"

Sample

screen shot 2013-12-15 at 8 41 35 pm

Logging Time for a Code Commit

When logging time in a Code Commit, the code commit message should follow the usage pattern. The commit message that you would normally submit as part of the code commit comes after the time tracking information. See example 7 below for a typical usage pattern. Code Commit time logging can be done as part of the overall Git Commit Message, individual GitHub Commit Comment or Line Comment.

Examples

  1. :clock1: 2h # => πŸ• 2h

  2. :clock1: 2h | 3pm # => πŸ• 2h | 3pm

  3. :clock1: 2h | 3:20pm # => πŸ• 2h | 3:20pm

  4. :clock1: 2h | Feb 26, 2014 # => πŸ• 2h | Feb 26, 2014

  5. :clock1: 2h | Feb 26, 2014 3pm # => πŸ• 2h | Feb 26, 2014 3pm

  6. :clock1: 2h | Feb 26, 2014 3:20pm # => πŸ• 2h | Feb 26, 2014 3:20pm

  7. :clock1: 2h | Installed security patch and restarted the server. # => πŸ• 2h | Installed security patch and restarted the server.

  8. :clock1: 2h | 3pm | Installed security patch and restarted the server. # => πŸ• 2h | 3pm | Installed security patch and restarted the server.

  9. :clock1: 2h | 3:20pm | Installed security patch and restarted the server. # => πŸ• 2h | 3:20pm | Installed security patch and restarted the server.

  10. :clock1: 2h | Feb 26, 2014 | Installed security patch and restarted the server. # => πŸ• 2h | Feb 26, 2014 | Installed security patch and restarted the server.

  11. :clock1: 2h | Feb 26, 2014 3pm | Installed security patch and restarted the server. # => πŸ• 2h | Feb 26, 2014 3pm | Installed security patch and restarted the server.

  12. :clock1: 2h | Feb 26, 2014 3:20pm | Installed security patch and restarted the server. # => πŸ• 2h | Feb 26, 2014 3:20pm | Installed security patch and restarted the server.

  • Dates and times can be provided in various formats, but the above formats are recommended for plain text readability.

  • Any GitHub.com supported clock Emoji is supported: "πŸ•œ", "πŸ•š", "πŸ•§", "πŸ•’", "πŸ•Ÿ", "πŸ••", "πŸ•’", "πŸ•˜", "πŸ•™", "πŸ•¦", "πŸ•‘", "πŸ•ž", "πŸ•”", "πŸ•‘", "πŸ•—", "πŸ•€", "πŸ•", "πŸ•₯", "πŸ•›", "πŸ•", "πŸ•“", "πŸ• ", "πŸ•–", "πŸ•£"

Sample

Code Commit Message:

screen shot 2013-12-15 at 8 42 55 pm screen shot 2013-12-15 at 8 42 43 pm

Code Commit Comment:

screen shot 2013-12-16 at 10 20 22 am

Code Commit Line Comment:

screen shot 2013-12-16 at 10 19 55 am

Logging Budgets for an Issue

Logging a budget for a specific issue should be done in its own comment. The comment should not include any data other than the budget tracking information.

Examples

  1. :dart: 5d # => 🎯 5d

  2. :dart: 5d | We cannot go over this time at all! # => 🎯 5d | We cannot go over this time at all!

Sample

screen shot 2013-12-15 at 8 46 33 pm

Logging Budgets for a Milestone

Logging a budget for a milestone should be done at the beginning of the milestone description. The typical milestone description information comes after the budget information. See example 2 below for a typical usage pattern.

Examples

  1. :dart: 5d # => 🎯 5d

  2. :dart: 5d | We cannot go over this time at all! # => 🎯 5d | We cannot go over this time at all!

Sample

screen shot 2013-12-15 at 8 42 04 pm screen shot 2013-12-15 at 8 41 55 pm

Tracking Non-Billable Time and Budgets

The ability to indicate where a Time Log and Budget is considered Non-Billable has been provided. This is typically used when staff are doing work that will not be billed to the client, but you want to track their time and indicate how much non-billable/free time has been allocated. The assumption is that all time logs and budgets are billable unless indicated to be Non-Billable.

You may indicate when a time log or budget is non-billable time in any Issue Time Log, Issue Budget, Milestone Budget, Code Commit Message, and Code Commit Comment.

To indicate if time or budgets are non-billable, you add the :free: πŸ†“ emoji right after your chosen clock emoji (like :clock1: πŸ•) or for budget you would place the :free: πŸ†“ emoji right after the :dart: 🎯 emoji.

Non-Billable Time and Budget Tracking Indicator Usage Example

Logging Non-Billable Time for an Issue
Examples
  1. :clock1: :free: 2h # => πŸ• πŸ†“ 2h
Logging Non-Billable Time for a Code Commit Message
Examples
  1. :clock1: :free: 2h # => πŸ• πŸ†“ 2h
Logging Non-Billable Time for a Code Commit Comment
Examples
  1. :clock1: :free: 2h # => πŸ• πŸ†“ 2h
Logging Non-Billable Budgets for an Issue
Examples
  1. :dart: :free: 5d # => 🎯 πŸ†“ 5d
Logging Non-Billable Budgets for a Milestone
Examples
  1. :dart: :free: 5d # => 🎯 πŸ†“ 5d

Sample Data Structure for Reporting

NOTE: These images are out of date. New data structures have been implemented and are in full use in the Time Tracker Gem and the Sinatra App. Sample data structures will be updated shortly.

Time Logging in a Issue

screen shot 2013-12-17 at 2 10 36 pm

Budget Logging in a Issue

screen shot 2013-12-17 at 2 10 58 pm

Budget Logging in a Milestone

screen shot 2013-12-17 at 2 16 30 pm

Code Commit Time Logging - Supports Time Logging in Commit Message and Commit Comments

screen shot 2013-12-17 at 2 17 08 pm

Notice the parent Duration field is empty. This is due to time being logged in the commit comments rather than the the Git Commit Message. A use case for this would be if the developer forgot to add the Time tracking information in their Git Commit Message, they can just add it to the Commit Comments after the commit has been pushed to GitHub without any issues or errors.

Future Features

  1. Tracking of Billable and non-billable hours Done

  2. Breakdown by Milestones

  3. Breakdown by User

  4. Breakdown by Labels

  5. Printable View

  6. Import from CSV

  7. Export to CSV

  8. Budget Tracking (What is the allocated budget of a issue, milestone, label, etc) Done

  9. Code Commit Time Tracking Done

  10. Support Business Hours Time and Budget Logging. Example: 1 week will equal 5 days (1 Business Week) rather than 1 week equalling 7 days (1 Calendar Week). Most popular use case would be able to say 1 Day would equal 8 hours rather than 24 hours. This is upcoming as the Chronic_Duration Gem has merged a pull request to support this feature.

  11. Add Ability to parse Label grouping words out of labels. This will allow Web app to categorize beyond milestones and to categorize within a label. Example: Label = Project Management: Project Oversight. Label = Business Analysis: Requirements Definition. Done

  12. Add ability to track Size of Issues - Likely will use Labels as Size (something like Small, Med, Large)

  13. Add ability to track estimated effort for an issue. Estimated effort and Budget are different. Budget is something that has been determined by the Project Management-like user. Estimated Effort is a duration that has been determined by the developer. Who this is submitted in the syntax still needs to be determined. Thinking maybe 🎱 or maybe Playing Cards emoji that is a relation to Agile Poker. Labels support is already provided. So you can currently use labels to categorize level of effort estimates.

  14. Explore the use of Natural Language Processing Libraries such as OpenNPL for better text processing.

  15. Add GitLab support. This is upcoming. Need to tweak data input structures and OmniOAuth support. But it looks like its very possible.

Process Overview

github time tracking process overview

Future Process rebuilt around Object Based design:

object based process overview

Data Analysis

This section will grow as the data analysis / UI is developed for the application

Data output from Data Analyzer and MongoDB

Using the MongoDB Aggregation Framework a series of high level aggregations are preformed to provide the required data for the front-end to display needed Time Tracking information.

Issue Time Output

NOTE: These images are out of date. New data structures have been implemented and are in full use in the Time Tracker Gem and the Sinatra App. Structures will be updated shortly.

[
    {
        "repo_name"=>"StephenOTT/Test1",
        "type"=>"Issue Time",
        "assigned_milestone_number"=>1,
        "issue_number"=>6,
        "issue_state"=>"open",
        "duration_sum"=>43200,
        "issue_count"=>3
    },
    {
        "repo_name"=>"StephenOTT/Test1",
        "type"=>"Issue Time",
        "assigned_milestone_number"=>1,
        "issue_number"=>7,
        "issue_state"=>"open",
        "duration_sum"=>14400,
        "issue_count"=>1
    }
]

Issue Budget Output

[
    {
        "repo_name"=>"StephenOTT/Test1",
        "type"=>"Issue Budget",
        "issue_number"=>7,
        "assigned_milestone_number"=>1,
        "issue_state"=>"open",
        "duration_sum"=>57600,
        "issue_count"=>1
    }
]

Milestone Budget Output

[
    {
        "repo_name"=>"StephenOTT/Test1",
        "type"=>"Milestone Budget",
        "milestone_number"=>1,
        "milestone_state"=>"open",
        "duration_sum"=>604800,
        "milestone_count"=>1
    }
]

More Repositories

1

GitHub-Analytics

GitHub Issues Tracker reporting and analytics (Project Management Reporting and Analytics)
Ruby
198
star
2

Cammand

Alternative UI to Camunda BPM Webapps (Tasklist, Cockpit, and Admin) + More!
C#
65
star
3

camunda-formio-plugin

Integration for Drag and Drop Formio Form Builder and Renderer with Camunda Tasklist App
Kotlin
61
star
4

GitLab-Time-Tracking

Lightweight Time Tracking application for GitLab Issue Queues
Ruby
52
star
5

camunda-prometheus-process-engine-plugin

Monitor your KPIs!!! Camunda BPM Process Engine Plugin providing Prometheus Monitoring, Metric classes for various BPMN use, Grafana Annotations, and HTTPServer data export: Used to generate Prometheus metrics anywhere in the Engine, including BPMN, CMN, and DMN engines and instances.
Groovy
50
star
6

Quintessential-Tasklist-Zeebe

The quintessential Zeebe tasklist for BPMN Human tasks with Drag and Drop Form builder, client and server side validations, and drop in Form Rendering
Java
34
star
7

STIX-Java

STIX 2.x Java Library
Java
25
star
8

Camunda-Monitoring

Monitor anything you can query in a Camunda BPM engine. Monitor KPIs, metrics, and any business performance
Groovy
23
star
9

GitHub-Reminders

Get email reminders based on parsed dates in GitHub Issue Comments: Sinatra + GitHub OAuth + Qless + Chronic gem + Email = GitHub-Reminders
Ruby
21
star
10

TAXII-Server

TAXII Server supporting the 2.1 spec.
Kotlin
14
star
11

Workflow-Linter

Workflow Linter for BPMN workflows
Kotlin
14
star
12

TAXII-springboot-bpmn

SpringBoot implementation of TAXII server backed with BPMN configuration
Java
13
star
13

STIX-Faker

STIX 2 Fake Data Generator
Groovy
11
star
14

camunda-vertx-springboot

Camunda BPM with SpringBoot and Vertx support: Add Camunda REST, TCP, etc APIs with Vertx's Polyglot capabilities: Javascript, Ruby, Kotlin, Scala, Java, etc
JavaScript
10
star
15

ProcessProjectTemplate

Template project for Process (BPMN, CMMN, DMN) / Camunda Projects
9
star
16

camunda-data-encryption-rsa

Camunda BPM Process Variable RSA encryption and Signed Object with SHA256 and RSA, using Nashorn Javascript
JavaScript
7
star
17

camunda-form-validator-js-server

Camunda BPM Form Validator plugin, enabling support for Javascript validation of Form Submissions for Start Events and User Tasks
JavaScript
7
star
18

Camunda-Scripting-Delegates-Process-Engine-Plugin

Java
6
star
19

TAXII-Worker

External Task Worker for TAXII-springboot-bpmn https://github.com/StephenOTT/TAXII-springboot-bpmn
Java
5
star
20

camunda-vertx-plugin

Camunda BPM Process Engine Plugin that creates a Vertx Instance and supports verticle deployment through YAML
Java
5
star
21

STIX-Interoperability-Runner

STIX Interoperability Runner to write and validate STIX Interoperability Spec tests
Kotlin
5
star
22

vertx-bpmn-model-doc-generator

Generate rendered FreeMarker templates based on Camunda BPM Model API usage of BPMN files. Great for generating business process documentation based on a .bpmn file
JavaScript
5
star
23

bpmn-to-image-server

HTTP/REST Server for bpmn-to-image cli: Convert your BPMN files to images through REST Endpoints!
Kotlin
4
star
24

camunda-incident-handler-nashorn-js

A Camunda BPM Process Engine Plugin that provides a generic incident handler implementation that executes Javascript
Java
4
star
25

camunda-concurrency-helpers-process-engine-plugin

Camunda BPM Process Engine Plugin that provides "Concurrency Helpers" for common functions performed in Process executions
Java
4
star
26

STIX-TAXII-DevTools

A set of development tools for STIX and TAXII development, inlcuding a web app
JavaScript
4
star
27

camunda-cheat-sheet

A list of commonly used links and commands for Camunda BPM
3
star
28

camunda-deployment-maven-plugin

A maven plugin that allows REST API based deployments to a Camunda BPM instance
Groovy
3
star
29

OpenC2-Orchestrator

OpenC2 Orchestrator backed by BPMN
Java
3
star
30

Drupal-GitHub-Issue-Sync

Create and Close Issues in GitHub when they are created and closed in Drupal.org project issue tracker
Ruby
3
star
31

camunda-spring-boot-rabbitmq-messaging

Example project of a Camunda Spring Boot project that uses RabbitMQ to queue messages
Groovy
3
star
32

Gov-BPMN-Deploying-Embedded-Forms-through-Camnda-REST-API

Example of using Embedded Forms that were deployed through the Camunda Rest API
HTML
3
star
33

OpenRPA

OpenRPA Architectures - Open Source Robotic Process Automation
2
star
34

Gov-BPMN-Error-Event-Handling-with-JavaScript

How to use Scripting (JavaScript and Groovy) in Camunda to Throw BPMN Errors that can be caught with Error Events and not have to write Java Delegation code.
2
star
35

vertx-js-validatejs

Example of Vertx Javascript verticle with NPM import of Validate.js
JavaScript
2
star
36

OpenC2-Worker

OpenC2 polymorphic event-driven non-blocking Worker
Java
2
star
37

STIX-Validator

STIX Validator http server for checking the JSON conformance to the STIX spec
Java
2
star
38

Camunda-MultiEngine-Data-Service

Camunda Process Engine Plugin providing a new History Handler (MongoDB) and Query Service that supports Complex Security Rules and Mongo Aggregations
Kotlin
2
star
39

Gov-BPMN-Multiple-Administrative-Zones

Government BPMN example of how to handle different business processes for different Administrative Zones (Wards, Boroughs, Districts, etc)
2
star
40

Gov-BPMN-Deploying-External-Scripts-through-Camnda-REST-API

Example of using a Script Task using a External Script that was deployed through the Camunda Rest API
JavaScript
2
star
41

OttawaSIREScrape

Scrape using FMiner to scrape content from the City of Ottawa's SIRE platform (Council Voting and Minutes)
PHP
1
star
42

presentations

Presentations that I have made to various groups
JavaScript
1
star
43

Sewer-Overflow-Activity

Sewer Overflow Activity drupal content type and taxonomy
PHP
1
star
44

javafx-nashorn-fatjar-and-bundler

Develop JavaFX applications using Nashorn JS and then package as a FatJar and bundle in native installers (exe, MSI, DMG, etc)
Java
1
star
45

camunda-message-buffer-plugin

Camunda BPM Message Buffer Process Engine Plugin: Buffers undeliverable messages using Camunda jobs
Kotlin
1
star
46

forms-manager

a WIP Forms Manager based on Micronaut, Hazelcast, and Formio
Kotlin
1
star
47

vertx-yaml-config-verticle-deployment

Example of vertical deployment based on watched yaml file. Uses Vertx-js-lang and has ability to generate a fatjar
JavaScript
1
star
48

Charon

Cyber Security Automation Orchestration Tooling
1
star
49

js-vertx-fatjar

A boilerplate project for Vert.x using Javascript and gradle to generate fatjars. Also provides Ruby Example
JavaScript
1
star
50

camunda-usertask-name-expression-process-engine-plugin

Camunda process engine plugin that allows you to use Extension Properties on user tasks to define Task Name Expressions and thus keep the original task name clean for BPMN rendering
Kotlin
1
star
51

Camunda-Scripting-Guide

Guide for using Scripting with Camunda. All the things you wish were in the docs!
1
star