Talk given at the lnug meetup on 23rd November 2011
MINT SOURCE
View Slide
Andy Appleton@appltnhttp://mintdigital.com
What, why?
Node.js - Redis - HerokuCoffeeScript - Socket.IO
Simple Heroku deploy$ git clone [email protected]:mintdigital/mint-source.git$ heroku create appname --stack cedar$ git push heroku master$ heroku ps:scale web=1$ heroku addons:add redistogo:nano$ heroku config:add NODE_ENV=production
Optional HTTP Auth$ heroku config:add AUTH_ENABLED=true$ heroku config:add AUTH_USER=chunky$ heroku config:add AUTH_PASS=bacon
http://github.com/user/project/admin/hooks
{"before": "5aef35982fb2d34e9d9d4502f6ede1072793222d","repository": {"url": "http://github.com/mint-digital/mint-source","name": "mintdigital","description": "A simple Node.js status board showing github commits and more.","watchers": 5,"forks": 2,"private": 1,"owner": {"name": "mintdigital"}},"commits": [{"id": "41a212ee83ca127e3c8cf465891ab7216a705f59","url": "http://github.com/mintdigital/mint-source/commit/41a212ee83ca127e3891ab7216a705f59","author": {"email": "[email protected]","name": "Andrew Appleton"},"message": "Devs love bacon","timestamp": "2011-11-15T14:57:17-08:00","added": ["filepath.rb"]POSThttp://appname.herokuapp.com/github_prh
Jenkins CIhttp://jenkins-ci.org/
Notification Plugin(post build hooks for Jenkins)https://wiki.jenkins-ci.org/display/JENKINS/Notification+Plugin
$ heroku config:add JENKINS_ENABLED=truehttp://your-ci-box/job/project-name/configure
{"name":"bacon","url":"http://devslovebacon.com","build":{"number":1,"phase":"FINISHED","status":"FAILURE","url":"job/project/5","fullUrl":"http://your-ci-box/job/project/5"}}POSThttp://appname.herokuapp.com/jenkins_pbh
no HTTP auth support, soJenkins box IP whitelisting$ heroku config:add JENKINS_IP=60.70.80.90
Discretion$ redis-cli> lpush Discretions "{\"orig\":\"secret\",\"subs\":\"public\"}"
Last.fmhttp://www.last.fm/api
POSThttp://appname.herokuapp.com/github_prh$ heroku config:add LASTFM_ENABLED=true$ heroku config:add LASTFM_KEY=12345...$ heroku config:add LASTFM_USER=mintdigitalLast.fm API credentials
Polling on the server,send data to clients via Socket.IO
What’s next?
app.get('/javascripts/:resource.js', (req, res) -># Compile and serve client side CoffeeScript on the flyfilePath = "./public/javascripts/#{req.params.resource}.coffee"fs.readFile(filePath, 'utf-8', (err, data) ->res.writeHead(200, {'Content-Type': 'application/javascript'})res.write(coffee.compile(data))res.end()))CS > JS Caching
Server Sent Events(Possibly)
More ServicesTweets, Foursquare checkinsGeneric notification endpoint
Available now on Githubhttps://github.com/mintdigital/mint-source
http://devslovebacon.com