[
  {
    "path": ".meteor/.finished-upgraders",
    "content": "# This file contains information which helps Meteor properly upgrade your\n# app when you run 'meteor update'. You should check it into version control\n# with your project.\n\nnotices-for-0.9.0\nnotices-for-0.9.1\n0.9.4-platform-file\nnotices-for-facebook-graph-api-2\n"
  },
  {
    "path": ".meteor/.gitignore",
    "content": "local\n"
  },
  {
    "path": ".meteor/.id",
    "content": "# This file contains a token that is unique to your project.\n# Check it into your repository along with the rest of this directory.\n# It can be used for purposes such as:\n#   - ensuring you don't accidentally deploy one app on top of another\n#   - providing package authors with aggregated statistics\n\n1yevmue1ah7sfon2yoez\n"
  },
  {
    "path": ".meteor/packages",
    "content": "# Meteor packages used by this project, one per line.\n# Check this file (and the other files in this directory) into your repository.\n#\n# 'meteor add' and 'meteor remove' will edit this file for you,\n# but you can also edit it by hand.\n\nmeteor-platform\nanti:fake\ndburles:factory\naccounts-base\naccounts-password\naccounts-ui\naccounts-github\nemail\niron:router\n"
  },
  {
    "path": ".meteor/platforms",
    "content": "server\nbrowser\n"
  },
  {
    "path": ".meteor/release",
    "content": "METEOR@1.1.0.2\n"
  },
  {
    "path": ".meteor/versions",
    "content": "accounts-base@1.2.0\naccounts-github@1.0.4\naccounts-oauth@1.1.5\naccounts-password@1.1.1\naccounts-ui@1.1.5\naccounts-ui-unstyled@1.1.7\nanti:fake@0.4.1\nautoupdate@1.2.1\nbase64@1.0.3\nbinary-heap@1.0.3\nblaze@2.1.2\nblaze-tools@1.0.3\nboilerplate-generator@1.0.3\ncallback-hook@1.0.3\ncheck@1.0.5\ndburles:factory@0.3.10\nddp@1.1.0\ndeps@1.0.7\nejson@1.0.6\nemail@1.0.6\nfastclick@1.0.3\ngeojson-utils@1.0.3\ngithub@1.1.3\nhtml-tools@1.0.4\nhtmljs@1.0.4\nhttp@1.1.0\nid-map@1.0.3\niron:controller@1.0.7\niron:core@1.0.7\niron:dynamic-template@1.0.7\niron:layout@1.0.7\niron:location@1.0.7\niron:middleware-stack@1.0.7\niron:router@1.0.7\niron:url@1.0.7\njquery@1.11.3_2\njson@1.0.3\nlaunch-screen@1.0.2\nless@1.0.14\nlivedata@1.0.13\nlocalstorage@1.0.3\nlogging@1.0.7\nmeteor@1.1.6\nmeteor-platform@1.2.2\nminifiers@1.1.5\nminimongo@1.0.8\nmobile-status-bar@1.0.3\nmongo@1.1.0\nnpm-bcrypt@0.7.8_2\noauth@1.1.4\noauth2@1.1.3\nobserve-sequence@1.0.6\nordered-dict@1.0.3\nrandom@1.0.3\nreactive-dict@1.1.0\nreactive-var@1.0.5\nreload@1.1.3\nretry@1.0.3\nroutepolicy@1.0.5\nservice-configuration@1.0.4\nsession@1.1.0\nsha@1.0.3\nspacebars@1.0.6\nspacebars-compiler@1.0.6\nsrp@1.0.3\ntemplating@1.1.1\ntracker@1.0.7\nui@1.0.6\nunderscore@1.0.3\nurl@1.0.4\nwebapp@1.2.0\nwebapp-hashing@1.0.3\n"
  },
  {
    "path": "README.md",
    "content": "# Slack Clone Built in Meteor.js\n\nCode for the scotch.io tutorial by Daniel (danyll.com)\n\n![](https://cask.scotch.io/2015/05/slack-clone-in-meteor-getting-started.png)\n"
  },
  {
    "path": "client/app.js",
    "content": "Template.messages.helpers({\n  messages: Messages.find({})\n});\n\nAccounts.ui.config({\n    passwordSignupFields: 'USERNAME_AND_EMAIL'\n});\n\nTemplate.registerHelper('currentChannel', function () {\n\treturn Session.get('channel');\n});\n\nTemplate.registerHelper(\"timestampToTime\", function (timestamp) {\n\tvar date = new Date(timestamp);\n\tvar hours = date.getHours();\n\tvar minutes = \"0\" + date.getMinutes();\n\tvar seconds = \"0\" + date.getSeconds();\n\treturn hours + ':' + minutes.substr(minutes.length-2) + ':' + seconds.substr(seconds.length-2);\n});\n\nTemplate.registerHelper(\"usernameFromId\", function (userId) {\n\tvar user = Meteor.users.findOne({_id: userId});\n\tif (typeof user === \"undefined\") {\n\t\treturn \"Anonymous\";\n\t}\n\tif (typeof user.services.github !== \"undefined\") {\n\t\treturn user.services.github.username;\n\t}\n\treturn user.username;\n});\n\nTemplate.listings.helpers({\n\tchannels: function () {\n\t\treturn Channels.find();\n\t}\n});\n\nTemplate.channel.helpers({\n\tactive: function () {\n\t\tif (Session.get('channel') === this.name) {\n\t\t\treturn \"active\";\n\t\t} else {\n\t\t\treturn \"\";\n\t\t}\n\t}\n});"
  },
  {
    "path": "client/components/channel.html",
    "content": "<template name=\"channel\">\n\t<li class=\"channel {{active}}\">\n\t\t<a class=\"channel_name\" href=\"/{{name}}\">\n\t\t\t<span class=\"unread\">\n\t\t\t\t0\n\t\t\t</span>\n\t\t\t<span>\n\t\t\t\t<span class=\"prefix\">#</span>\n\t\t\t\t<span class=\"channel-name\">{{name}}</span>\n\t\t\t</span>\n\t\t</a>\n\t</li>\n</template>"
  },
  {
    "path": "client/components/footer.html",
    "content": "<template name=\"footer\">\n\t<div class=\"footer\">\n\t\t<div class=\"user-menu\">\n\t\t\t<span class=\"user-menu_profile-pic\"></span>\n\t\t\t<span class=\"user-menu_username\">scotch</span>\n\t\t\t<img class=\"connection_icon\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABmFBMVEUAAAD////////////////////////////////////2+/LR5bKw1Hmfy1KUxz2VyD2izVKz1nnS5rP////A3JuOw0qKwkCNxD+QxT6Sxj6Txz6SxUnC3Jv1+fGXx2GDvkCGwECIwUCLwj+PxD6PxT+JwUCFwECZyGD2+vGSxWF9vEGAvkGDv0CMwz+Wx2GPw2F4ukJ7u0J+vUGBvkGHwUB8u0KSxGG31pp0uEN3uUJ5u0KFv0CCv0B6u0K415p5uU1yt0N/vUF1uEN8u0zG3bFttURwtkR5ukLH3rGWxnlqtERutUR2uUOZx3l6uVZos0VvtkRxt0Nzt0N8ulVisUVlskVns0VzuENmskVfsEVps0VztlZer0VhsEVjsUVstER1t1aOwXhcrkZdr0VgsEaQwnm/2a9YrUZbrka/2rDz+PFhr09XrEZksE6pzplUq0ZVrEZarUaqzpl0tWJRq0dWrEZ1tmJztWJOqUdSq0dxtGJMqEdNqUdQqkdytWKmzJhXrFBKqEdZrU+716+GvXhjr1dIp0hkr1dYtVOVAAAAFHRSTlMAV8/v/wCH+x/n////////////9kvBHZAAAAG7SURBVHgBvdOxjtNAEIDhGe/MZO3sxVaiIJkiSNdQUPJOeQlqXoCCIg/EU9BQHRKg5CT7ErzrHTa+aBOqaxC/tdLK+2kbj+H/hoWhlCmQr0HeyYxyM8mvkWHKoAfBS6cBWEeYugAzf4QGp1SV8DvU/ZjBdN7iud6hdnOTdl+TuALyrUPEwfdu3nc1ipr9AwdIFZPysJylRDfa6cZL2rfgMd9QjO8R0Y+/u7sa4LHZz4wN/MXEyw1hbK1VZdV7PZ1OyufzktsxXADCW5EkXq06Paan02Uoo3kHmAEzJ8HBN6v5qlkqaxTmCdAzQK8Noi6rXwCrJyutepUMAARnXS++3cvm2xvftR0PzAyQAXtwdNChifvFHppBdR003IDCIg6JDOse4DX8WIdo1TwfpaUgqWC9c4eqqg5HF20QZdAMmDlasdHWkrKR03J0A4iIXRTrpba29laiY8YMyOyMKYkXroyROZZuwVTyztAFJPmZKBGq+FxFVBr5BHr7ubd3GICfAM+88qDHHYe/BmbbIAaGKU/Fz10emDxyHxBhgJTg+DGP3O3QbltMBkd92F2H9sWxB772wo9z2z8FfwDHWbdKLDfq1AAAAABJRU5ErkJggg==\">\n\t\t\t<span class=\"connection_status\">online</span>\n\t\t</div>\n\t\t<div class=\"input-box\">\n\t\t\t<input type=\"text\" class=\"input-box_text\">\n\t\t</div>\n\t</div>\n</template>"
  },
  {
    "path": "client/components/header.html",
    "content": "<template name=\"header\">\n\t<div class=\"header\">\n\t\t<div class=\"team-menu\">scotch</div>\n\t\t<div class=\"channel-menu\">\n\t\t\t<span class=\"channel-menu_name\">\n\t\t\t\t<span class=\"channel-menu_prefix\">#</span>\n\t\t\t\t{{currentChannel}}\n\t\t\t</span>\n\t\t</div>\n\t</div>\n</template>"
  },
  {
    "path": "client/components/listings.html",
    "content": "<template name=\"listings\">\n\t<div class=\"listings\">\n\t\t<div class=\"listings_channels\">\n\t\t\t<h2 class=\"listings_header\">Channels</h2>\n\t\t\t<ul class=\"channel_list\">\n\t\t\t\t{{#each channels}}\n\t\t\t\t\t{{> channel name=name}}\n\t\t\t\t{{/each}}\n\t\t\t</ul>\n\t\t\t\n\t\t</div>\n\t\t<div class=\"listings_direct-messages\"></div>\n\t\t<p class=\"disclaimer\">This demo is not created by, affiliated with, or supported by Slack Technologies, Inc.</p>\n\t</div>\n</template>"
  },
  {
    "path": "client/components/message.html",
    "content": "<template name=\"message\">\n\t<div class=\"message\">\n\t\t<a href=\"\" class=\"message_profile-pic\"></a>\n\t\t<a href=\"\" class=\"message_username\">{{usernameFromId user}}</a>\n\t\t<span class=\"message_timestamp\">{{timestampToTime timestamp}}</span>\n\t\t<span class=\"message_star\"></span>\n\t\t<span class=\"message_content\">{{text}}</span>\n\t</div>\n</template>"
  },
  {
    "path": "client/components/messages.html",
    "content": "<template name=\"messages\">\n\t<div class=\"message-history\">\n\t\t{{#if Template.subscriptionsReady}}\n\t\t\t{{#each messages}}\n\t\t\t\t{{> message text=text timestamp=timestamp user=user }}\n\t\t\t{{/each}}\n\t\t{{else}}\n\t\t\tLoading…\n\t\t{{/if}}\n\t</div>\n</template>"
  },
  {
    "path": "client/global.css",
    "content": "/* line 5, ../../../../../../var/lib/gems/1.9.1/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n  margin: 0;\n  padding: 0;\n  border: 0;\n  font: inherit;\n  font-size: 100%;\n  vertical-align: baseline;\n}\n\n/* line 22, ../../../../../../var/lib/gems/1.9.1/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */\nhtml {\n  line-height: 1;\n}\n\n/* line 24, ../../../../../../var/lib/gems/1.9.1/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */\nol, ul {\n  list-style: none;\n}\n\n/* line 26, ../../../../../../var/lib/gems/1.9.1/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n\n/* line 28, ../../../../../../var/lib/gems/1.9.1/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */\ncaption, th, td {\n  text-align: left;\n  font-weight: normal;\n  vertical-align: middle;\n}\n\n/* line 30, ../../../../../../var/lib/gems/1.9.1/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */\nq, blockquote {\n  quotes: none;\n}\n/* line 103, ../../../../../../var/lib/gems/1.9.1/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */\nq:before, q:after, blockquote:before, blockquote:after {\n  content: \"\";\n  content: none;\n}\n\n/* line 32, ../../../../../../var/lib/gems/1.9.1/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */\na img {\n  border: none;\n}\n\n/* line 116, ../../../../../../var/lib/gems/1.9.1/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */\narticle, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary {\n  display: block;\n}\n\n/* line 6, ../tests/sass/_layout.scss */\n* {\n  box-sizing: border-box;\n}\n\n/* line 10, ../tests/sass/_layout.scss */\nhtml {\n  position: relative;\n  height: 100%;\n  font-size: 16px;\n  font-family: 'Lato', sans-serif;\n}\n\n/* line 16, ../tests/sass/_layout.scss */\nbody {\n  height: 100%;\n  width: 100%;\n  margin: 0;\n  padding-top: 53px;\n  padding-bottom: 64px;\n}\n\n/* line 23, ../tests/sass/_layout.scss */\n.header {\n  position: fixed;\n  top: 0;\n  left: 0;\n  height: 53px;\n  width: 100%;\n}\n\n/* line 31, ../tests/sass/_layout.scss */\n.main {\n  height: 100%;\n}\n\n/* line 35, ../tests/sass/_layout.scss */\n.footer {\n  position: absolute;\n  left: 0;\n  bottom: 0;\n  height: 64px;\n  width: 100%;\n}\n\n/* line 1, ../tests/sass/components/_header.scss */\n.team-menu {\n  position: relative;\n  width: 220px;\n  height: 53px;\n  line-height: 53px;\n  font-weight: 900;\n  padding: 0 1rem;\n  color: #ffffff;\n  background: #3e313c;\n  border-bottom: 2px solid #372c36;\n  float: left;\n  cursor: pointer;\n}\n\n/* line 19, ../tests/sass/components/_header.scss */\n.channel-menu_name {\n  display: inline-block;\n  padding: 0 .5rem 0 1.5rem;\n  color: #555459;\n  font-size: 1.4rem;\n  font-weight: 900;\n  line-height: 53px;\n  cursor: pointer;\n}\n\n/* line 29, ../tests/sass/components/_header.scss */\n.channel-menu_prefix {\n  color: #9e9ea6;\n  padding-right: .1rem;\n  font-weight: 500;\n}\n\n/* line 1, ../tests/sass/components/_main.scss */\n.listings {\n  height: 100%;\n  width: 220px;\n  float: left;\n  color: #ab9ba9;\n  background-color: #4d394b;\n  overflow-y: auto;\n  overflow-x: hidden;\n}\n\n/* line 11, ../tests/sass/components/_main.scss */\n.message-history {\n  margin-left: 220px;\n  overflow-y: auto;\n  overflow-x: hidden;\n  height: 100%;\n  padding: 0 18px 1rem 1.5rem;\n}\n\n/* line 4, ../tests/sass/components/_listings.scss */\n.listings_channels {\n  margin: 1rem 0 2rem;\n}\n\n/* line 8, ../tests/sass/components/_listings.scss */\n.listings_header {\n  text-align: left;\n  font-size: .8rem;\n  line-height: 1.25rem;\n  margin: 0 1rem .1rem;\n  text-transform: uppercase;\n  font-weight: 700;\n  color: #ab9ba9;\n  width: 165px;\n  position: relative;\n}\n\n/* line 20, ../tests/sass/components/_listings.scss */\n.channel_list {\n  list-style-type: none;\n  text-align: left;\n  color: #ab9ba9;\n}\n\n/* line 26, ../tests/sass/components/_listings.scss */\n.channel {\n  height: 24px;\n  line-height: 24px;\n  -moz-border-radius-topright: 0.25rem;\n  -webkit-border-top-right-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n  -moz-border-radius-bottomright: 0.25rem;\n  -webkit-border-bottom-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n  margin-right: 17px;\n  color: #ffffff;\n  padding-left: 1rem;\n}\n\n/* line 35, ../tests/sass/components/_listings.scss */\n.unread {\n  color: #ffffff;\n  background: #eb4d5c;\n  border-radius: 9px;\n  padding: 2px 9px;\n  font-size: .8rem;\n  line-height: 14px;\n  font-weight: 700;\n  vertical-align: baseline;\n  white-space: nowrap;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);\n  float: right;\n  margin-right: 3px;\n  margin-top: 3px;\n}\n\n/* line 51, ../tests/sass/components/_listings.scss */\n.channel.active {\n  background: #4c9689;\n}\n\n/* line 55, ../tests/sass/components/_listings.scss */\n.channel_prefix {\n  color: #b2d5c9;\n}\n\n/* line 59, ../tests/sass/components/_listings.scss */\n.disclaimer {\n  font-size: 0.8rem;\n  padding-left: 1rem;\n  margin-right: 17px;\n}\n\n/* line 4, ../tests/sass/components/_message.scss */\n.message {\n  position: relative;\n  margin-top: .5rem;\n  padding: .25rem 2rem .1rem 3rem;\n  min-height: 36px;\n}\n\n/* line 11, ../tests/sass/components/_message.scss */\n.message_profile-pic {\n  position: absolute;\n  left: 0;\n  display: block;\n  -moz-border-radius: 0.2rem;\n  -webkit-border-radius: 0.2rem;\n  border-radius: 0.2rem;\n  width: 36px;\n  height: 36px;\n  background-image: url(\"http://i.imgur.com/LikUNLc.png\");\n  background-size: cover;\n}\n\n/* line 22, ../tests/sass/components/_message.scss */\n.message_username {\n  font-weight: 900;\n  padding-right: .25rem;\n  color: #3d3c40 !important;\n  margin-left: 0;\n  font-style: normal;\n  text-decoration: none;\n}\n\n/* line 31, ../tests/sass/components/_message.scss */\n.message_timestamp {\n  text-align: left;\n  display: inline;\n  position: relative;\n  top: 0;\n  left: 0;\n  color: #babbbf;\n  font-size: 12px;\n  line-height: 1.2rem;\n  width: 36px;\n  margin-right: 0;\n  margin-left: 0;\n}\n\n/* line 45, ../tests/sass/components/_message.scss */\n.message_content {\n  color: #8b898f;\n  font-style: italic;\n  display: block;\n  min-height: 1rem;\n}\n\n/* line 4, ../tests/sass/components/_user-menu.scss */\n.user-menu {\n  float: left;\n  width: 220px;\n  height: 100%;\n  cursor: pointer;\n  background: #3e313c;\n  border-top: 2px solid #372c36;\n  padding: 7px 0 9px 8px;\n  height: 4rem;\n  position: fixed;\n  bottom: 0;\n  left: 0;\n}\n\n/* line 18, ../tests/sass/components/_user-menu.scss */\n.user-menu_profile-pic {\n  display: inline-block;\n  float: left;\n  -moz-border-radius: 0.2rem;\n  -webkit-border-radius: 0.2rem;\n  border-radius: 0.2rem;\n  width: 48px;\n  height: 48px;\n  background-image: url(\"http://i.imgur.com/LikUNLc.png\");\n  background-size: cover;\n  margin-right: 8px;\n}\n\n/* line 29, ../tests/sass/components/_user-menu.scss */\n.user-menu_username {\n  display: block;\n  color: #ffffff;\n  font-weight: 900;\n  line-height: 1.5rem;\n  margin-top: .2rem;\n  max-width: 120px;\n}\n\n/* line 38, ../tests/sass/components/_user-menu.scss */\n.connection_icon {\n  width: 12px;\n  height: 12px;\n}\n\n/* line 43, ../tests/sass/components/_user-menu.scss */\n.connection_status {\n  color: #ab9ba9;\n}\n\n/* line 1, ../tests/sass/components/_input-box.scss */\n.input-box {\n  height: 100%;\n  margin-left: 220px;\n}\n\n/* line 6, ../tests/sass/components/_input-box.scss */\n.input-box_text {\n  font-size: .95rem;\n  width: 90%;\n  margin-left: 2%;\n  margin-bottom: auto;\n  line-height: 1.2rem;\n  border: 2px solid #e0e0e0;\n  -moz-border-radius: 0.2rem;\n  -webkit-border-radius: 0.2rem;\n  border-radius: 0.2rem;\n  -moz-background-clip: padding-box;\n  -webkit-background-clip: padding-box;\n  background-clip: padding-box;\n  color: #3d3c40;\n  -webkit-appearance: none;\n  -webkit-box-shadow: none;\n  -moz-box-shadow: none;\n  box-shadow: none;\n  outline: 0;\n  bottom: 0;\n  min-height: 41px !important;\n  padding: 9px 5px 9px 8px;\n}\n\n\n.channel_name {\n  text-decoration: none;\n  color: inherit;\n}"
  },
  {
    "path": "client/head.html",
    "content": "<head>\n\t<meta charset=\"utf-8\">\n\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n\t<title></title>\n\t<link href='http://fonts.googleapis.com/css?family=Lato:400,700,900' rel='stylesheet' type='text/css'>\n</head>"
  },
  {
    "path": "client/input.js",
    "content": "Template.footer.events({\n  'keypress input': function(e) {\n    var inputVal = $('.input-box_text').val();\n    if(!!inputVal) {\n      var charCode = (typeof e.which == \"number\") ? e.which : e.keyCode;\n      if (charCode == 13) {\n        e.stopPropagation();\n        Meteor.call('newMessage', {\n          text: $('.input-box_text').val(),\n          channel: Session.get('channel')\n        });\n        $('.input-box_text').val(\"\");\n        return false;\n      }    \n    }\n  }\n});"
  },
  {
    "path": "client/room.html",
    "content": "<template name=\"app\">\n\t{{> header}}\n\t<div class=\"main\">\n\t\t{{> loginButtons}}\n\t\t{{> listings}}\n\t\t{{> yield}}\n\t</div>\n\t{{> footer}}\n</template>"
  },
  {
    "path": "client/routes.js",
    "content": "Router.configure({\n  layoutTemplate: 'app'\n});\n\nRouter.route('/:channel', function () {\n\tSession.set('channel', this.params.channel);\n\tthis.render('messages');\n});\n\nRouter.route('/', function () {\n\tthis.redirect('/general');\n});"
  },
  {
    "path": "client/startup/subscribe.js",
    "content": "Meteor.subscribe('channels');\nMeteor.subscribe('allUsernames');\n\nTemplate.messages.onCreated(function() {\n  var self = this;\n  self.autorun(function() {\n    self.subscribe('messages', Session.get('channel'), function () {\n    \tself.autorun(function() {\n\t\t\tMessages.find({channel: Session.get('channel')}).count();\n\t\t\tMeteor.setTimeout(function () {\n\t\t\t\t$('.message-history').scrollTop(Number.MAX_VALUE);\n\t\t\t}, 100);\n\t\t});\n    });\n  });\n});"
  },
  {
    "path": "client/stubs.js",
    "content": "Meteor.methods({\n  newMessage: function (message) {\n  \tmessage.timestamp = Date.now();\n    message.user = Meteor.userId();\n    Messages.insert(message);\n  }\n})"
  },
  {
    "path": "lib/collections/channels.js",
    "content": "Channels = new Mongo.Collection(\"channels\");"
  },
  {
    "path": "lib/collections/messages.js",
    "content": "Messages = new Mongo.Collection(\"messages\");"
  },
  {
    "path": "server/accounts.js",
    "content": "Accounts.config({\n\tsendVerificationEmail: true\n});"
  },
  {
    "path": "server/mail.js",
    "content": "Meteor.startup(function () {\n  smtp = {\n    username: 'dan@danyll.com',\n    password: 'y3Z8TQxpxCiYsJJsCwyV0A',\n    server:   'smtp.mandrillapp.com',\n    port: 587\n  };\n\n  process.env.MAIL_URL = 'smtp://' + encodeURIComponent(smtp.username) + ':' + encodeURIComponent(smtp.password) + '@' + encodeURIComponent(smtp.server) + ':' + smtp.port;\n});"
  },
  {
    "path": "server/methods.js",
    "content": "Meteor.methods({\n  newMessage: function (message) {\n  \tmessage.timestamp = Date.now();\n    message.user = Meteor.userId();\n    Messages.insert(message);\n  }\n})"
  },
  {
    "path": "server/publications.js",
    "content": "Meteor.publish('messages', function (channel) {\n\treturn Messages.find({channel: channel});\n});\n\nMeteor.publish('channels', function () {\n\treturn Channels.find();\n});\n\nMeteor.publish(\"allUsernames\", function () {\n  return Meteor.users.find({}, {fields: {\n  \t\"username\": 1,\n  \t\"services.github.username\": 1\n  }});\n});"
  },
  {
    "path": "server/seeder.js",
    "content": "Meteor.startup(function() {\n\n  Meteor.users.remove({});\n  Accounts.createUser({\n    username: \"scotchio\",\n    email: \"scotch@example.com\",\n    password: \"dummypassword\"\n  });\n\n  Factory.define('message', Messages, {\n    text: function() {\n    \treturn Fake.sentence();\n    },\n    user: Meteor.users.findOne()._id,\n    timestamp: Date.now(),\n    channel: 'general'\n  });\n\n  // Add this if you want to remove all messages before seeding\n  Messages.remove({});\n\n  if (Messages.find({}).count() === 0) {\n    _(10).times(function(n) {\n      Factory.create('message');\n    });\n  }\n\n  Channels.remove({});\n  Channels.insert({\n    name: \"general\"\n  });\n  Channels.insert({\n    name: \"random\"\n  });\n});"
  }
]