Tasks = new Mongo.Collection("tasks"); if (Meteor.isClient) { // This code only runs on the client Template.body.helpers({ tasks: function () { if (Session.get('hideCompleted')) { return Tasks.find({ checked : { $ne : true }}, { sort: { createdAt: -1 }}); } else { return Tasks.find({}, {sort: {createdAt: -1}}); } }, hideCompleted: function () { var ret = Session.get("hideCompleted"); return ret; }, incompleteCount: function () { var ret = Tasks.find({ checked: { $ne: true }}).count(); return ret; } }); // Inside the if (Meteor.isClient) block, right after Template.body.helpers: Template.body.events({ "submit .new-task": function (event) { // This function is called when the new task form is submitted var text = event.target.text.value; Tasks.insert({ text: text, createdAt: new Date() // current time }); // Clear form event.target.text.value = ""; // Prevent default form submit return false; }, 'change .hide-completed input': function (e) { Session.set('hideCompleted', e.target.checked); } }); Template.task.events({ 'click .delete': function (e) { Tasks.remove(this._id); }, 'click .toggle-checked' : function (e) { Tasks.update(this._id, { $set: { checked: !this.checked } }); } }); }