47
Meteor Developing TeamSync (Real Time Collaboration Tool) Febin John James Boutline

Hasgeek meteor workshop

Embed Size (px)

DESCRIPTION

Meteor Workshop

Citation preview

Page 1: Hasgeek meteor workshop

Meteor

Developing TeamSync (Real Time Collaboration

Tool)

Febin John JamesBoutline

Page 2: Hasgeek meteor workshop

TeamSync Demo

Page 3: Hasgeek meteor workshop

Introduction to Meteor

Hands on Mini Mongo

Create a prototype with static data

Wire up with database

Add authentication

Deploy the app

Workshop

Page 4: Hasgeek meteor workshop

Developing TeamSync using Meteor

7.Sessions

Understanding meteor sessions

8.Meteor Accounts

Understanding meteor accountsAdding external login servicesAdding twitter login

9.Allow Deny

Understand allow deny callbacks.Securing TeamSync

10.Deployment

Deploying teamsync app.

4. Collections

Meteor CollectionsMeteor Data SynchronizationIntegrating collection with templatesTurning prototype into functional appReactivity

5. Routing

Learn about routing in meteor Create team pages with Unique Url’s

6.Publications & Subscriptions

How publications & subscriptions workAdding publications to our prototype

1. Introduction

What is meteor?Why meteor?Installing meteor Meteor Packages

2. Mini Mongo

What makes mongodb simple?Mini Mongo CRUD Operations

3. Templates

Meteor’s templating languageYour first templateTemplate Manager’sTeamSync Prototype with static data

Page 5: Hasgeek meteor workshop

Introduction to Meteor

Page 6: Hasgeek meteor workshop

Before Meteor

Page 7: Hasgeek meteor workshop

Meteor

Database Real-time Sync User Interface

Page 8: Hasgeek meteor workshop

Why Meteor?

Easy to learn

Up and running in hours

You are already familiar with javascript, aren’t you?

Page 9: Hasgeek meteor workshop

Meteor Packages

Core Packages Smart Packages Atmosphere Packages

Page 10: Hasgeek meteor workshop

Hands on Mini Mongo

Page 11: Hasgeek meteor workshop

Features of MongoDB

No Schema

High Performance

High Scalability

Page 12: Hasgeek meteor workshop

MongoDB CRUD Operations

Type “meteor mongo”

Let’s begin

Page 13: Hasgeek meteor workshop

db.collection.insert({})db.collection.update({})db.collection.remove({})db.collection.find({})

Page 14: Hasgeek meteor workshop

Starting Meteor

Page 15: Hasgeek meteor workshop

Creating a meteor app

meteor create teamsync

cd teamsync

meteor

Page 16: Hasgeek meteor workshop

Meteor app folder structure

client serverpubliclibcollections

Page 17: Hasgeek meteor workshop

Templates

Page 18: Hasgeek meteor workshop

A meteor app

Templates(HTML Files)Client Side(JS Files)Server Side(JS Files)

Page 19: Hasgeek meteor workshop

Your first template

Page 20: Hasgeek meteor workshop

{{>helloWorld}}

<template name=”helloWorld”><h1> Hello World </h1></template>

Page 21: Hasgeek meteor workshop

Let’s create prototype of teamsync with static data

create team templateteams board templatejoin team templatechat templatemission’s templateteam update templatemission update template

Page 22: Hasgeek meteor workshop

Collections

Page 23: Hasgeek meteor workshop

Collections for TeamSync

Teams Collection Mission’s Collection Status Collection

Messages Collection

Page 24: Hasgeek meteor workshop

Teams = new Meteor.Collection(‘Teams’);

Teams.insert({})

Teams.update({})

Teams.remove({})

Teams.find({})

Page 25: Hasgeek meteor workshop

Server-Side Collections

Page 26: Hasgeek meteor workshop

Client-Side Collections

Page 27: Hasgeek meteor workshop

Let’s wire the static templates with database

Page 28: Hasgeek meteor workshop

Handlebars

Page 29: Hasgeek meteor workshop

Template.teamsBoard.teams =

function()

{

return Teams.find();

}

{{#each teams}}

<li>{{name}}</li>

{{/each}}

JS HTML

Page 30: Hasgeek meteor workshop

Reactivity

Page 31: Hasgeek meteor workshop

Routing

Page 32: Hasgeek meteor workshop

Iron-Router

Page 33: Hasgeek meteor workshop

Router.map(function () {

this.route('dashboard', {

path: '/'dashboard',

waitOn: function () {

}

});

});

Page 34: Hasgeek meteor workshop

Making unique links for team pages

Page 35: Hasgeek meteor workshop

Publications & Subscriptions

Page 36: Hasgeek meteor workshop

How it works?

Page 37: Hasgeek meteor workshop

Meteor.publish(‘teamsData’,function

(){

return Teams.find({});

});

this.subscribe(‘teamsData’)

Server Client

Page 38: Hasgeek meteor workshop

Adding publication’s and subscriptions to TeamSync

Page 39: Hasgeek meteor workshop

Sessions

Page 40: Hasgeek meteor workshop

Session.set(‘loggedIn’,false);

Session.get(‘loggedIn’);

Page 41: Hasgeek meteor workshop

Improving User Experience of TeamSync with sessions

Page 42: Hasgeek meteor workshop

Meteor Accounts

Page 43: Hasgeek meteor workshop

Adding twitter Authentication to our TeamSync App

Page 44: Hasgeek meteor workshop

Allow/Deny

Page 45: Hasgeek meteor workshop

Securing our TeamSync App with allow deny callbacks

Page 46: Hasgeek meteor workshop

Teams.allow({

insert: function (userId,tournaments)

{

if(Meteor.user())

return true;

else

return false;

}

});

Page 47: Hasgeek meteor workshop

Deploying TeamSync