skeleton with latest React
81
-old-/README.md
Normal file
@ -0,0 +1,81 @@
|
||||
#[burnchart](http://radekstepan.com/burnchart)
|
||||
|
||||
GitHub Burndown Chart as a Service. Answers the question "are my projects on track"?
|
||||
|
||||
![Build Status](http://img.shields.io/codeship/5645c5d0-4b7e-0132-641d-623ee7e48d08/master.svg?style=flat)
|
||||
[![Coverage](http://img.shields.io/coveralls/radekstepan/burnchart/master.svg?style=flat)](<https://coveralls.io/r/radekstepan/burnchart>)
|
||||
[![Dependencies](http://img.shields.io/david/radekstepan/burnchart.svg?style=flat)](https://david-dm.org/radekstepan/burnchart)
|
||||
[![License](http://img.shields.io/badge/license-AGPL--3.0-red.svg?style=flat)](LICENSE)
|
||||
|
||||
![image](https://raw.githubusercontent.com/radekstepan/burnchart/master/public/screenshots.jpg)
|
||||
|
||||
##Features
|
||||
|
||||
1. Running from the **browser**, apart from GitHub account sign in which uses Firebase backend.
|
||||
1. **Private repos**; sign in with your GitHub account.
|
||||
1. **Store** projects in browser's `localStorage`.
|
||||
1. **Off days**; specify which days of the week to leave out from ideal burndown progression line.
|
||||
1. **Trend line**; to see if you can make it to the deadline at this pace.
|
||||
1. Different **point counting** strategies; select from 1 issues = 1 point or read size from issue label.
|
||||
|
||||
##Quick Start
|
||||
|
||||
```bash
|
||||
$ npm install burnchart -g
|
||||
$ burnchart 8080
|
||||
# burnchart/2.0.8 started on port 8080
|
||||
```
|
||||
|
||||
##Configuration
|
||||
|
||||
At the moment, there is no ui exposed to change the app settings. You have to edit the `src/models/config.coffee` file.
|
||||
|
||||
An array of days when we are not working where Monday = 1. The ideal progression line won't *drop* on these days.
|
||||
|
||||
```coffeescript
|
||||
"off_days": [ ]
|
||||
```
|
||||
|
||||
Choose from `ONE_SIZE` which means each issue is worth 1 point or `LABELS` where issue labels determine its size.
|
||||
|
||||
```coffeescript
|
||||
"points": "ONE_SIZE"
|
||||
```
|
||||
|
||||
If you specify `LABELS` above, this is the place to set a regex used to parse a label and extract points size from it. When multiple matching size labels exist, their sum is taken.
|
||||
|
||||
```coffeescript
|
||||
"size_label": /^size (\d+)$/
|
||||
```
|
||||
|
||||
##Development
|
||||
|
||||
[Rake](https://www.ruby-lang.org/en/documentation/installation/) is used as a tool to execute tasks, the steps would be roughly as follows:
|
||||
|
||||
```bash
|
||||
apt-get install ruby-full
|
||||
gem install rake
|
||||
rake build
|
||||
rake serve
|
||||
```
|
||||
|
||||
You can run the following tasks:
|
||||
|
||||
```bash
|
||||
rake build # Build everything & minify
|
||||
rake build:css # Build the styles with LESS
|
||||
rake build:js # Build the app with Browserify
|
||||
rake build:minify # Minify build for production
|
||||
rake commit[message] # Build app and make a commit with latest changes
|
||||
rake install # Install dependencies with NPM
|
||||
rake publish # Publish to GitHub Pages
|
||||
rake serve # Start a web server on port 8080
|
||||
rake test # Run tests with mocha
|
||||
rake test:coverage # Run code coverage, mocha with Blanket.js
|
||||
rake test:coveralls[token] # Run code coverage and publish to Coveralls
|
||||
rake watch # Watch everything
|
||||
rake watch:css # Watch the styles
|
||||
rake watch:js # Watch the app
|
||||
```
|
||||
|
||||
Please read the [Architecture](docs/ARCHITECTURE.md) document when contributing code.
|
84
-old-/package.json
Normal file
@ -0,0 +1,84 @@
|
||||
{
|
||||
"name": "burnchart",
|
||||
"version": "2.0.10",
|
||||
"description": "GitHub Burndown Chart as a Service",
|
||||
"author": "Radek Stepan <dev@radekstepan.com> (http://radekstepan.com)",
|
||||
"license": "AGPL-3.0",
|
||||
"keywords": [
|
||||
"github",
|
||||
"issues",
|
||||
"burndown",
|
||||
"chart",
|
||||
"scrum"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/radekstepan/burnchart.git"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "rake serve",
|
||||
"test": "rake test"
|
||||
},
|
||||
"bin": {
|
||||
"burnchart": "./bin/run.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"async": "1.5.2",
|
||||
"brain": "0.7.0",
|
||||
"chance": "0.8.0",
|
||||
"d3": "3.5.12",
|
||||
"d3-tip": "git://github.com/Caged/d3-tip",
|
||||
"director": "1.2.8",
|
||||
"firebase": "2.3.2",
|
||||
"lodash": "3.10.1",
|
||||
"lscache": "1.0.5",
|
||||
"marked": "0.3.5",
|
||||
"moment": "2.11.1",
|
||||
"node-static": "0.7.7",
|
||||
"normalize.less": "1.0.0",
|
||||
"ractive": "0.6.1",
|
||||
"ractive-ractive": "0.4.4",
|
||||
"semver": "5.1.0",
|
||||
"sortedindex-compare": "0.0.1",
|
||||
"superagent": "1.6.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"blanket": "1.2.1",
|
||||
"browserify": "13.0.0",
|
||||
"chai": "3.4.1",
|
||||
"coffee-script": "1.10.0",
|
||||
"coffeeify": "2.0.1",
|
||||
"coveralls": "2.11.6",
|
||||
"grunt": "0.4.5",
|
||||
"grunt-cli": "0.1.13",
|
||||
"grunt-contrib-clean": "0.7.0",
|
||||
"grunt-contrib-cssmin": "0.14.0",
|
||||
"grunt-contrib-uglify": "0.11.0",
|
||||
"grunt-gh-pages": "1.0.0",
|
||||
"grunt-mkdir": "0.1.2",
|
||||
"less": "2.5.3",
|
||||
"lesshat": "3.0.2",
|
||||
"mocha": "2.3.4",
|
||||
"mocha-lcov-reporter": "1.0.0",
|
||||
"proxyquire": "1.7.3",
|
||||
"ractivate": "0.2.0",
|
||||
"watch": "0.17.1",
|
||||
"watchify": "3.7.0"
|
||||
},
|
||||
"browserify": {
|
||||
"transform": [
|
||||
"coffeeify",
|
||||
"ractivate"
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"blanket": {
|
||||
"loader": "./node-loaders/coffee-script",
|
||||
"pattern": "src",
|
||||
"data-cover-never": "node_modules",
|
||||
"data-cover-flags": {
|
||||
"engineOnly": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 118 KiB |
10
-old-/public/index.html
Normal file
@ -0,0 +1,10 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="css/app.bundle.css">
|
||||
</head>
|
||||
<body>
|
||||
<script src="js/app.bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
48931
-old-/public/js/app.bundle.js
Normal file
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 116 KiB |
13
.gitignore
vendored
@ -1,10 +1,7 @@
|
||||
node_modules/
|
||||
public/js/.bundle.js
|
||||
public/js/bundle.js
|
||||
public/css/.bundle.css
|
||||
public/css/bundle.css
|
||||
/node_modules
|
||||
*.log
|
||||
.build_cache~
|
||||
.grunt/
|
||||
build/*.map
|
||||
public/js/.app.bundle.js
|
||||
public/js/app.js
|
||||
public/css/.app.bundle.css
|
||||
public/css/app.css
|
||||
.DS_Store
|
33
Makefile
Normal file
@ -0,0 +1,33 @@
|
||||
WATCHIFY = ./node_modules/.bin/watchify
|
||||
WATCH = ./node_modules/.bin/watch
|
||||
LESS = ./node_modules/.bin/lessc
|
||||
BROWSERIFY = ./node_modules/.bin/browserify
|
||||
UGLIFY = ./node_modules/.bin/uglifyjs
|
||||
MOCHA = ./node_modules/.bin/mocha
|
||||
NAME = $(shell node -e "console.log(require('./package.json').name)")
|
||||
|
||||
watch-js:
|
||||
${MAKE} build-js
|
||||
${WATCHIFY} -e -s $(NAME) ./src/js/index.jsx -t babelify -o public/js/bundle.js -d -v
|
||||
|
||||
watch-css:
|
||||
${MAKE} build-css
|
||||
${WATCH} "${MAKE} build-css" src/less
|
||||
|
||||
watch:
|
||||
${MAKE} watch-js & ${MAKE} watch-css
|
||||
|
||||
build-js:
|
||||
${BROWSERIFY} -e -s $(NAME) ./src/js/index.jsx -t babelify | ${UGLIFY} - > public/js/bundle.js
|
||||
|
||||
build-css:
|
||||
${LESS} src/less/app.less > public/css/bundle.css
|
||||
|
||||
build:
|
||||
${MAKE} build-js
|
||||
${MAKE} build-css
|
||||
|
||||
test:
|
||||
${MOCHA} --compilers js:babel/register --ui exports --timeout 5000 --bail --reporter spec
|
||||
|
||||
.PHONY: test
|
85
README.md
@ -1,81 +1,16 @@
|
||||
#[burnchart](http://radekstepan.com/burnchart)
|
||||
burnchart v3
|
||||
|
||||
GitHub Burndown Chart as a Service. Answers the question "are my projects on track"?
|
||||
A [React](http://facebook.github.io/react/) app utilizing a [Flux](http://facebook.github.io/flux/) architecture.
|
||||
|
||||
![Build Status](http://img.shields.io/codeship/5645c5d0-4b7e-0132-641d-623ee7e48d08/master.svg?style=flat)
|
||||
[![Coverage](http://img.shields.io/coveralls/radekstepan/burnchart/master.svg?style=flat)](<https://coveralls.io/r/radekstepan/burnchart>)
|
||||
[![Dependencies](http://img.shields.io/david/radekstepan/burnchart.svg?style=flat)](https://david-dm.org/radekstepan/burnchart)
|
||||
[![License](http://img.shields.io/badge/license-AGPL--3.0-red.svg?style=flat)](LICENSE)
|
||||
- EventEmitter listeners can use RegExp paths thus allowing the use of namespaces
|
||||
- routing resets the whole UI between page changes and so Components are easier to reason about (`componentDidMount`)
|
||||
|
||||
![image](https://raw.githubusercontent.com/radekstepan/burnchart/master/public/screenshots.jpg)
|
||||
|
||||
##Features
|
||||
|
||||
1. Running from the **browser**, apart from GitHub account sign in which uses Firebase backend.
|
||||
1. **Private repos**; sign in with your GitHub account.
|
||||
1. **Store** projects in browser's `localStorage`.
|
||||
1. **Off days**; specify which days of the week to leave out from ideal burndown progression line.
|
||||
1. **Trend line**; to see if you can make it to the deadline at this pace.
|
||||
1. Different **point counting** strategies; select from 1 issues = 1 point or read size from issue label.
|
||||
|
||||
##Quick Start
|
||||
##Quickstart
|
||||
|
||||
```bash
|
||||
$ npm install burnchart -g
|
||||
$ burnchart 8080
|
||||
# burnchart/2.0.8 started on port 8080
|
||||
$ nvm use
|
||||
$ npm install
|
||||
$ make watch
|
||||
$ npm start
|
||||
# Server started on port 8080
|
||||
```
|
||||
|
||||
##Configuration
|
||||
|
||||
At the moment, there is no ui exposed to change the app settings. You have to edit the `src/models/config.coffee` file.
|
||||
|
||||
An array of days when we are not working where Monday = 1. The ideal progression line won't *drop* on these days.
|
||||
|
||||
```coffeescript
|
||||
"off_days": [ ]
|
||||
```
|
||||
|
||||
Choose from `ONE_SIZE` which means each issue is worth 1 point or `LABELS` where issue labels determine its size.
|
||||
|
||||
```coffeescript
|
||||
"points": "ONE_SIZE"
|
||||
```
|
||||
|
||||
If you specify `LABELS` above, this is the place to set a regex used to parse a label and extract points size from it. When multiple matching size labels exist, their sum is taken.
|
||||
|
||||
```coffeescript
|
||||
"size_label": /^size (\d+)$/
|
||||
```
|
||||
|
||||
##Development
|
||||
|
||||
[Rake](https://www.ruby-lang.org/en/documentation/installation/) is used as a tool to execute tasks, the steps would be roughly as follows:
|
||||
|
||||
```bash
|
||||
apt-get install ruby-full
|
||||
gem install rake
|
||||
rake build
|
||||
rake serve
|
||||
```
|
||||
|
||||
You can run the following tasks:
|
||||
|
||||
```bash
|
||||
rake build # Build everything & minify
|
||||
rake build:css # Build the styles with LESS
|
||||
rake build:js # Build the app with Browserify
|
||||
rake build:minify # Minify build for production
|
||||
rake commit[message] # Build app and make a commit with latest changes
|
||||
rake install # Install dependencies with NPM
|
||||
rake publish # Publish to GitHub Pages
|
||||
rake serve # Start a web server on port 8080
|
||||
rake test # Run tests with mocha
|
||||
rake test:coverage # Run code coverage, mocha with Blanket.js
|
||||
rake test:coveralls[token] # Run code coverage and publish to Coveralls
|
||||
rake watch # Watch everything
|
||||
rake watch:css # Watch the styles
|
||||
rake watch:js # Watch the app
|
||||
```
|
||||
|
||||
Please read the [Architecture](docs/ARCHITECTURE.md) document when contributing code.
|
||||
|
111
package.json
@ -1,84 +1,39 @@
|
||||
{
|
||||
"name": "burnchart",
|
||||
"version": "2.0.10",
|
||||
"description": "GitHub Burndown Chart as a Service",
|
||||
"author": "Radek Stepan <dev@radekstepan.com> (http://radekstepan.com)",
|
||||
"license": "AGPL-3.0",
|
||||
"keywords": [
|
||||
"github",
|
||||
"issues",
|
||||
"burndown",
|
||||
"chart",
|
||||
"scrum"
|
||||
],
|
||||
"version": "3.0.0-alpha",
|
||||
"scripts": {
|
||||
"start": "./node_modules/.bin/superstatic public --port 8080",
|
||||
"test": "make test"
|
||||
},
|
||||
"dependencies": {
|
||||
"deep-diff": "^0.3.3",
|
||||
"lesshat": "^3.0.2",
|
||||
"lodash": "^3.10.1",
|
||||
"normalize.less": "^1.0.0",
|
||||
"object-assign": "^4.0.1",
|
||||
"object-path": "^0.9.2",
|
||||
"react": "^0.14.6",
|
||||
"react-mini-router": "^2.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel": "^6.3.26",
|
||||
"babel-preset-es2015": "^6.3.13",
|
||||
"babel-preset-react": "^6.3.13",
|
||||
"babelify": "^7.2.0",
|
||||
"browserify": "^13.0.0",
|
||||
"chai": "^3.4.1",
|
||||
"less": "^2.5.3",
|
||||
"mocha": "^2.3.4",
|
||||
"superstatic": "^4.0.1",
|
||||
"uglify-js": "^2.6.1",
|
||||
"watch": "^0.17.1",
|
||||
"watch-less": "0.0.4",
|
||||
"watchify": "^3.7.0"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/radekstepan/burnchart.git"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "rake serve",
|
||||
"test": "rake test"
|
||||
},
|
||||
"bin": {
|
||||
"burnchart": "./bin/run.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"async": "1.5.2",
|
||||
"brain": "0.7.0",
|
||||
"chance": "0.8.0",
|
||||
"d3": "3.5.12",
|
||||
"d3-tip": "git://github.com/Caged/d3-tip",
|
||||
"director": "1.2.8",
|
||||
"firebase": "2.3.2",
|
||||
"lodash": "3.10.1",
|
||||
"lscache": "1.0.5",
|
||||
"marked": "0.3.5",
|
||||
"moment": "2.11.1",
|
||||
"node-static": "0.7.7",
|
||||
"normalize.less": "1.0.0",
|
||||
"ractive": "0.6.1",
|
||||
"ractive-ractive": "0.4.4",
|
||||
"semver": "5.1.0",
|
||||
"sortedindex-compare": "0.0.1",
|
||||
"superagent": "1.6.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"blanket": "1.2.1",
|
||||
"browserify": "13.0.0",
|
||||
"chai": "3.4.1",
|
||||
"coffee-script": "1.10.0",
|
||||
"coffeeify": "2.0.1",
|
||||
"coveralls": "2.11.6",
|
||||
"grunt": "0.4.5",
|
||||
"grunt-cli": "0.1.13",
|
||||
"grunt-contrib-clean": "0.7.0",
|
||||
"grunt-contrib-cssmin": "0.14.0",
|
||||
"grunt-contrib-uglify": "0.11.0",
|
||||
"grunt-gh-pages": "1.0.0",
|
||||
"grunt-mkdir": "0.1.2",
|
||||
"less": "2.5.3",
|
||||
"lesshat": "3.0.2",
|
||||
"mocha": "2.3.4",
|
||||
"mocha-lcov-reporter": "1.0.0",
|
||||
"proxyquire": "1.7.3",
|
||||
"ractivate": "0.2.0",
|
||||
"watch": "0.17.1",
|
||||
"watchify": "3.7.0"
|
||||
},
|
||||
"browserify": {
|
||||
"transform": [
|
||||
"coffeeify",
|
||||
"ractivate"
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"blanket": {
|
||||
"loader": "./node-loaders/coffee-script",
|
||||
"pattern": "src",
|
||||
"data-cover-never": "node_modules",
|
||||
"data-cover-flags": {
|
||||
"engineOnly": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"private": true,
|
||||
"license": "LicenseRef-LICENSE"
|
||||
}
|
||||
|
0
public/css/.gitkeep
Normal file
@ -1,10 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
|
||||
<link rel="stylesheet" type="text/css" href="css/app.bundle.css">
|
||||
<link href="css/bundle.css" media="all" rel="stylesheet" type="text/css" />
|
||||
</head>
|
||||
<body>
|
||||
<script src="js/app.bundle.js"></script>
|
||||
<div id="app" />
|
||||
<script type="text/javascript" src="js/bundle.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|