diff --git a/README.md b/README.md index 1d1faef..1d454e1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,57 @@ # burnchart -1. Do not show login/logged-in state when we are still fetching that information from Firebase -1. Handle 404 on routes; from catch all check if '/' or go 404 controller -1. Variable document.title on different pages \ No newline at end of file +## Concept + +GitHub Burndown Chart as a service. Public repos are free, for private access auth via GitHub and pay. + +## Name + +charcoal, charriot + +- gurndown [.com/.io] github burndown +- bithubchart [.com/.io] burndown github chart +- burnchart [.io] + +## Tasks + +### MVP + +[ ] landing page allows you to immediately jump into action +[ ] past repos are cached remotely or in localStorage +[ ] show chart for the current milestone or choose a custom one +[ ] be able to config options through UI that currently have to be hardcoded in config +[ ] embed user tracking +[ ] sort projects based on their closest due dates +[ ] show only repo name if all projects are under our name +[ ] rotate between percentage progress and points left +[ ] Send notifications to people like Codeship or have our own delivery system perhaps like Github or just show a notification icon and onclick ask people to upgrade + +### Extras + +[ ] choose your own strategy for naming issues, e.g. all issues are one size +[ ] choose your own theme +[ ] custom milestone start dates +[ ] show burndown chart for all milestones +[ ] handle Enterprise editions of GH +[ ] auto-update the chart (with delay when no activity) when logged-in +[ ] show a countdown clock towards the end of the milestone or show overdue +[ ] add weekly velocity across all projects and a bar chart to that effect +[ ] show a little lightning and a number for today's velocity +[ ] show burnchart only for your tasks; this would be a second category of projects & tasks in the dashboard +[ ] show an overall text-based status like: all projects on time etc. +[ ] until GH fix milestone start date then provide an option to specify it (either do that on GH server or locally) +[ ] work on mobile devices +[ ] show velocity number for each member of the team in the corner of the layout +[ ] show velocity for all team members and how it progresses through time +[ ] points collector - give medals for 1st 3 spots in terms of velocity +[ ] Do not show login/logged-in state when we are still fetching that information from Firebase +[ ] Handle 404 on routes; from catch all check if '/' or go 404 controller +[ ] Variable document.title on different pages +[ ] In add a project form autocomplete on my username, orgs I am member of and repos I have access to +[ ] Someone might create a public repo, add it to the system and switch it to private; need to check repo priviledges at runtime; or when asking for auth, one would choose either public OR public/private, but this could get confusign. + +## Notes + +- *payment gateways* in Canada: http://www.shopify.com/payment-gateways/canada +- start people on a *Startup* plan showing them a comparison table to upgrade to a better offering +- Startup, small business and enterprise plans \ No newline at end of file diff --git a/public/css/app.bundle.css b/public/css/app.bundle.css index e889746..eb34814 100644 --- a/public/css/app.bundle.css +++ b/public/css/app.bundle.css @@ -437,7 +437,7 @@ table { 100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)} } body{color:#3e4457;font-family:'MuseoSans500Regular',sans-serif} -a{text-decoration:none;color:#aaafbf} +a{text-decoration:none;color:#aaafbf;cursor:pointer} h1,h2,h3,p{margin:0} ul{list-style-type:none;margin:0;padding:0;} ul li{display:inline-block} @@ -471,20 +471,14 @@ ul li{display:inline-block} #content #hero .content .cta a{font-family:'MuseoSlab500Regular',serif;padding:11px 20px;-webkit-border-radius:2px;border-radius:2px;display:inline-block;margin:0 4px;} #content #hero .content .cta a.primary{font-weight:bold;background:#c1041c;color:#fff} #content #hero .content .cta a.secondary{background:#fff;color:#c1041c} -#content #add{border:1px solid #cdcecf;-webkit-border-radius:2px;border-radius:2px;background:#fff;width:400px;} #content #add h2{color:#3e4457} #content #add p{font-family:'MuseoSlab500Regular',serif;color:#b1b6c4;margin-top:10px;line-height:20px;text-align:justify;text-justify:inter-word;} #content #add p a{color:#3e4457} -#content #add .form{padding:20px;} +#content #add .form{margin-top:20px;} #content #add .form table{width:100%;} #content #add .form table tr td:first-child{width:100%} #content #add .form input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:10px;width:100%;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px;border:1px solid #dde1ed;border-right:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.2);box-shadow:inset 0 1px 2px rgba(0,0,0,0.2)} #content #add .form a{margin-left:-2px;font-family:'MuseoSlab500Regular',serif;padding:11px 20px;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0;display:inline-block;font-weight:bold;background:#c1041c;color:#fff} -#content #add .header,#content #add .footer{padding:20px 30px} -#content #add .header{-webkit-box-shadow:0 1px 2px rgba(221,225,237,0.5);box-shadow:0 1px 2px rgba(221,225,237,0.5);margin-bottom:2px;border-bottom:1px solid #dde1ed;} -#content #add .header a{font-family:'MuseoSlab500Regular',serif} -#content #add .footer{background:#f9fafb;color:#aaafbf;-webkit-box-shadow:inset 0 1px 2px rgba(221,225,237,0.2);box-shadow:inset 0 1px 2px rgba(221,225,237,0.2);border-top:1px solid #dde1ed;text-align:center;font-family:'MuseoSlab500Regular',serif;} -#content #add .footer .icon{display:inline-block;color:#aaafbf} #content #repos{border:1px solid #cdcecf;-webkit-border-radius:2px;border-radius:2px;} #content #repos h2{color:#3e4457;display:inline-block} #content #repos .sort{float:right;line-height:30px} diff --git a/public/css/app.css b/public/css/app.css index d347f3a..932d403 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -30,7 +30,7 @@ 100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)} } body{color:#3e4457;font-family:'MuseoSans500Regular',sans-serif} -a{text-decoration:none;color:#aaafbf} +a{text-decoration:none;color:#aaafbf;cursor:pointer} h1,h2,h3,p{margin:0} ul{list-style-type:none;margin:0;padding:0;} ul li{display:inline-block} @@ -64,20 +64,14 @@ ul li{display:inline-block} #content #hero .content .cta a{font-family:'MuseoSlab500Regular',serif;padding:11px 20px;-webkit-border-radius:2px;border-radius:2px;display:inline-block;margin:0 4px;} #content #hero .content .cta a.primary{font-weight:bold;background:#c1041c;color:#fff} #content #hero .content .cta a.secondary{background:#fff;color:#c1041c} -#content #add{border:1px solid #cdcecf;-webkit-border-radius:2px;border-radius:2px;background:#fff;width:400px;} #content #add h2{color:#3e4457} #content #add p{font-family:'MuseoSlab500Regular',serif;color:#b1b6c4;margin-top:10px;line-height:20px;text-align:justify;text-justify:inter-word;} #content #add p a{color:#3e4457} -#content #add .form{padding:20px;} +#content #add .form{margin-top:20px;} #content #add .form table{width:100%;} #content #add .form table tr td:first-child{width:100%} #content #add .form input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:10px;width:100%;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px;border:1px solid #dde1ed;border-right:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.2);box-shadow:inset 0 1px 2px rgba(0,0,0,0.2)} #content #add .form a{margin-left:-2px;font-family:'MuseoSlab500Regular',serif;padding:11px 20px;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0;display:inline-block;font-weight:bold;background:#c1041c;color:#fff} -#content #add .header,#content #add .footer{padding:20px 30px} -#content #add .header{-webkit-box-shadow:0 1px 2px rgba(221,225,237,0.5);box-shadow:0 1px 2px rgba(221,225,237,0.5);margin-bottom:2px;border-bottom:1px solid #dde1ed;} -#content #add .header a{font-family:'MuseoSlab500Regular',serif} -#content #add .footer{background:#f9fafb;color:#aaafbf;-webkit-box-shadow:inset 0 1px 2px rgba(221,225,237,0.2);box-shadow:inset 0 1px 2px rgba(221,225,237,0.2);border-top:1px solid #dde1ed;text-align:center;font-family:'MuseoSlab500Regular',serif;} -#content #add .footer .icon{display:inline-block;color:#aaafbf} #content #repos{border:1px solid #cdcecf;-webkit-border-radius:2px;border-radius:2px;} #content #repos h2{color:#3e4457;display:inline-block} #content #repos .sort{float:right;line-height:30px} diff --git a/public/js/app.bundle.js b/public/js/app.bundle.js index 0b2fffc..945b9a1 100644 --- a/public/js/app.bundle.js +++ b/public/js/app.bundle.js @@ -21536,9 +21536,22 @@ goog.exportProperty(FirebaseSimpleLogin,"onOpen",FirebaseSimpleLogin.onOpen);Fir module.exports = Ractive.extend({ 'template': require('../templates/addProjectForm'), 'data': { - 'user': user + 'user': user, + 'value': null }, - 'adapt': [Ractive.adaptors.Ractive] + 'adapt': [Ractive.adaptors.Ractive], + init: function() { + var autocomplete; + autocomplete = function(value) { + return console.log('Autocomplete', value); + }; + this.observe('value', _.debounce(autocomplete, 200), { + 'init': false + }); + return this.on('submit', function() { + return console.log('Submit the form with', this.get('value')); + }); + } }); }); @@ -21679,13 +21692,13 @@ goog.exportProperty(FirebaseSimpleLogin,"onOpen",FirebaseSimpleLogin.onOpen);Fir // addProjectForm.mustache root.require.register('burnchart/src/templates/addProjectForm.js', function(exports, require, module) { - module.exports = ["
Type in the name of the repository as you would normally. If you'd like to add a private GitHub project, Sign In first.
",""," "," | ",""," Add"," | ","
Type in the name of the repository as you would normally. If you'd like to add a private GitHub project, Sign In first.
",""," "," | ",""," Add"," | ","
Type in the name of the repository as you would normally. If you'd like to add a private GitHub project, Sign In first.
",""," "," | ",""," Add"," | ","
Type in the name of the repository as you would normally. If you'd like to add a private GitHub project, Sign In first.
",""," "," | ",""," Add"," | ","
- + | - Add + Add |