SlideShare a Scribd company logo
1 of 32
Arabnetdesign+codeday 
Riyadh 
11 Nov 2014 
Meteor.js 
Building real time apps for web & mobile in a fraction of the time
+
present….
5 
JawadAbdulsamad,Co-founder@KayfakCorp. 
JawadhasbeenusingMeteorsinceitsearlydaysandbuilttheoriginaldemosforKayfakappforweb&mobileinMeteor.HeistheRiyadh‘captain’fortheMeteorcommunityandisexcitedaboutthepotentialofMeteortomakerapidweb& mobileappdevelopmentaccessibletomorepeople. 
Jawad’sbackgroundisinmanagementconsulting.HeisfromLondon,hasanMAfromOxfordandpreviouslyworkedatMcKinsey,Ask.comandSTC. 
MohamedTahaIbrahim,Co-founder@Dopravo 
Mohamedco-foundedDopravobackin2008.HehasledseveraleBusinesssolutionsimplementationsinthegovernmentandprivatesectors.InhisfreetimeheenjoysdevelopingsolutionsinJavaScriptframeworkssuchas:Knockout.js, andAngularJS. 
Mohamed’sbackgroundisinRoboticsengineeringfromMonashUniversity. 
HOSTING TODAY’S WORKSHOP
6 
1.Why Meteor? 
2.What can I build with this? 
3.Example app 
4.Building a "todos" app in 30m 
5.Q&A 
AGENDA
7 
1.Why Meteor? 
2.What can I build with this? 
3.Example app 
4.Building a "todos" app in 30m 
5.Q&A 
AGENDA
8 
Meteor is a complete open source platformfor building web and mobile appsin pure JavaScript
9 
Build awesome user experiences 
Modern UI 
Browser & mobile 
Live updates 
Ultra responsive 
Easily integrate with libraries like famo.us and velocity.js to create a slick native experience 
Rapidly add mobile support and extend your app experience seamlessly onto tablet & smartphones 
Data reactively updates live on the page when it changes making it easy to create real time experiences 
Changes made on a client are reflected instantly using ‘latency compensation’ which reduces laggyperformance
10 
Develop apps simply and quickly 
Radically less code 
One language everywhere 
Unified package system 
Hot deploys 
Write a apps in much fewer lines of code due to the reactive programming model extending from DB to client 
Simple APIs enable you to write simple javascriptand run it on both client and server 
Super-simple, reliable and integrated package system. A wealth of packages available to run on web & mobile 
Simple one-command deploys which trigger a ‘hot code reload’ across all browsers and mobile devices
AGENDA 
11 
1.Why Meteor? 
2.What can I build with this? 
3.Example app 
4.Building a "todos" app in 30m 
5.Q&A
WORKPOP: LA-BASED METEOR STARTUP 
12 
Description 
A simple tool for employers to hire employees for hourly tasks 
Funding 
$7.9m 
Evan Williams, Biz Stone & others 
What they said… 
“the most rapid prototyping, iteration and development we’ve seen from an early stage company” Dan Scholnick
KAYFAK: ARABIC MESSAGING APP 
13 
Description 
Instant messaging app for the Arabic speaking market 
Current stage 
Pre-seed funding and private beta 
Find out more 
www.kayfak.co 
Meteor features used 
Meteor Cordova for iOS & Android
14 
1.Why Meteor? 
2.What can I build with this? 
3.Example app 
4.Building a "todos" app in 30m 
5.Q&A 
AGENDA
15 
DEMO 1 
Illustreets.co.uk
16 
DEMO 2 
Meteor-todos
17 
DEMO 3 
Kayfakmobile app
18 
1.Why Meteor? 
2.What can I build with this? 
3.Example app 
4.Building a "todos" app in 30m 
5.Q&A 
AGENDA
GETTING CONNECTED 
19 
http://goo.gl/tIdk8V 
https://www.meteor.com/install 
Wifi: tbd 
Password: tbd
YOUR FIRST METEOR APP 
20 
https://www.meteor.com/install 
Let’s walk through the official tutorial together and see how Meteor really works
FIRST THINGS FIRST: INSTALL METEOR 
21 
curl https://install.meteor.com/ | sh 
Great, that was pretty easy. Now let’s build our first meteor app!
STEP 1: CREATE AN APP 
22 
meteor create arabnet-todos 
This creates all the files you need to run your app: 
•arabnet-todos.js-> JS loaded on client & server 
•arabnet-todos.html-> where you define your view templates 
•arabnet-todos.css-> app styling 
•.meteor -> internal meteor files 
cd arabnet-todos 
meteor 
http://localhost:3000 
Your app is running! Ready for a hotcode reload??
STEP 2a: DEFINE YOUR VIEW TEMPLATES 
23 
<!--simple-todos.html --> 
<head> 
<title>ArabnettodoList</title> 
</head> 
<body> 
<div class="container"> 
<header> 
<h1>ArabnetTodoList</h1> 
</header> 
<ul> 
{{#each tasks}} 
{{> task}} 
{{/each}} 
</ul> 
</div> 
</body> 
<template name="task"> 
<li>{{text}}</li> 
</template> and tags are treated like regular HTML but code inside tags is parsed and compiled into ‘spacebars’ templates and can then be included elsewhere in HTML using or referenced in JS using 
// simple-todos.js 
if(Meteor.isClient) { 
// This code only runs on the client 
Template.body.helpers({ 
tasks: [ 
{ text: "This is task 1"}, 
{ text: "This is task 2"}, 
{ text: "This is task 3"} 
] 
}); 
} 
Add logic to your spacebars templates using curly braces {{ example }} 
Here we iterate over the tasks array defined in the taskshelper method in our javascript 
Here we created a JS helper called taskson Template.bodythat returns a simple array. We then call this in our template, and iterate over it to create the <ul> items which will eventually represent our todos
STEP 2b: ADDING CSS 
24 
https://www.meteor.com/try/2 
Let’s go to the tutorial page & copy some CSS to put into arabnet-todos.css 
This tutorial will focus on how to use Meteor so we’ll grab this ready-made CSS as a shortcut!
STEP 3: COLLECTIONS 
25 
// simple-todos.js 
Tasks = newMongo.Collection("tasks"); 
if(Meteor.isClient) { 
// This code only runs on the client 
Template.body.helpers({ 
tasks: function() { 
returnTasks.find({}); 
} 
}); 
} 
// open Meteor mongo console 
$ meteor mongo 
$ db.tasks.insert({ text: "Hello world!", createdAt: newDate() }); 
Here we update the code to remove the text array containing the placeholder ‘todos’ and replacing it with a Meteor collectionin Mongo which exists on both server andthe client (mini-mongo) 
Here we will manually manipulate the mongoDBin order to see Meteor’s reactivityin action. 
Upon inserting a new task into the ‘tasks’ collection you will see your app immediately update and reflect this new task item on the screen using the template we defined in the previous step.
STEP 4: FORMS & EVENTS 
26 
// Inside existing arabnet-todos.html file 
<header> 
<h1>TodoList</h1> 
<!--add a form below the h1 --> 
<form class="new-task"> 
<input type="text"name="text" 
placeholder="Type to add new tasks"/> 
</form> 
</header> 
// 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 
vartext = event.target.text.value; 
Tasks.insert({ 
text: text, 
createdAt: newDate() // current time 
}); 
// Clear form 
event.target.text.value = ""; 
// Prevent default form submit 
returnfalse; 
} 
}); 
//Replace Template.body.helpersfind{} with this code to sort by time 
returnTasks.find({}, {sort: {createdAt: -1}}); 
The events API uses keys & event handlers like Jqueryso will be very familiar for users of JS MVC frameworks like Backbone. The cool thing is that we add the task item (“document” in Mongo) directly from the client (latency compensation) 
We add a form to the HTML giving it a class .new-taskwhich will be used in the JS file to capture the event & add new tasks to Mongo
STEP 5: UPDATE & REMOVE 
27 
<!--replace the existing task template with this code --> <template name="task"> 
<li class="{{#if checked}}checked{{/if}}"> 
<button class="delete">&times;</button> 
<input type="checkbox"checked="{{checked}}" 
class="toggle-checked"/> 
<span class="text">{{text}}</span> 
</li> 
</template> 
// In the client code, below everything elseTemplate.task.events({ 
"click .toggle-checked": function() { 
// Set checked property to opposite of its current value 
Tasks.update(this._id, {$set: {checked: ! this.checked}}); 
}, 
"click .delete": function() { 
Tasks.remove(this._id); 
} 
}); 
Here we are simply adding a checkbox to enable users to indicate when a task is complete and can be removed from the list. We use Spacebars logic 
{{ #if checked }}to apply a class of .checkedto the <li> items. 
We also add a delete button 
In the JS file we now create an event which triggers when a task item’s checkbox is clicked and will update the task item’s corresponding ‘document’ in MongoDBto have an attribute of checked which will be set to the opposite of whatever its current value is. 
Similarly we create a delete event that removes the document from Mongo when it is clicked. 
this._idin an event grabs the current task (this) and _idgrabs its unique Mongo identifier field
STEP 6: DEPLOY TO THE WEB! 
28 
meteor deploy your_app_name.meteor.com 
THAT’S IT!!! Your app just hit a devserver hosted by Meteor 
http://your_app_name.meteor.com 
Try it out on your Mac and mobile browser…
STEP 7: RUNNING ON MOBILE 
29 
meteor install-sdkios 
Follow all the prompts to set up everything you need to run iosapps 
Sets up the app on your iOS device via xcode. 
Awesome. 
meteor add-platform ios 
meteor run ios 
meteor run ios-device 
This gets your app up and running on the iOS simulator
STEP 8: USING SESSION AS A REACTIVE DATA STORE 
30 
<!--add the checkbox to <body> right below the h1 --> 
<label class="hide-completed"> 
<input type="checkbox" checked="{{hideCompleted}}"/>Hide Completed Tasks 
</label> 
<!--display the count at the end of the <h1> tag --> <h1>TodoList ({{incompleteCount}})</h1> 
// Add to Template.body.events 
"change .hide-completed": function(event) { Session.set("hideCompleted", event.target.checked); 
} 
// Replace the existing Template.body.helpersTemplate.body.helpers({ 
tasks: function() { 
if(Session.get("hideCompleted")) { 
// If hide completed is checked, filter tasks 
returnTasks.find({checked: {$ne: true}}, {sort: {createdAt: -1}}); 
} else{ 
// Otherwise, return all of the tasks 
returnTasks.find({}, {sort: {createdAt: -1}}); 
} 
}, 
hideCompleted: function() { 
returnSession.get("hideCompleted"); 
} 
}); 
// Add to Template.body.helpers 
incompleteCount: function() { returnTasks.find({checked: {$ne: true}}).count(); 
} 
Now we will add a checkbox & use session to store the completed state of each task. If hide completed is selected the list will be sorted and only incomplete tasks will be shown. 
We also use a similar technique to show the current count of incomplete tasks
31 
1.Why Meteor? 
2.What can I build with this? 
3.Case study 
4.Building a "todos" app in 30m 
5.Q&A 
AGENDA
RESOURCES & LINKS 
32 
•Discover Meteor (https://www.discovermeteor.com/) 
•Evented Mind (https://www.eventedmind.com/) 
•Meteor Hacks (https://meteorhacks.com/) 
•http://todomvc.com/ 
•www.dopravo.com 
•www.kayfak.co 
•Contact us: 
–jawad@kayfak.co 
–mohamed@dopravo.com

More Related Content

What's hot

How to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptHow to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptKaty Slemon
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applicationsAstrails
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteorSapna Upreti
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitAriya Hidayat
 
Adding User Management to Node.js
Adding User Management to Node.jsAdding User Management to Node.js
Adding User Management to Node.jsDev_Events
 
20150812 4시간만에 따라해보는 windows 10 앱 개발
20150812  4시간만에 따라해보는 windows 10 앱 개발20150812  4시간만에 따라해보는 windows 10 앱 개발
20150812 4시간만에 따라해보는 windows 10 앱 개발영욱 김
 
02 asp.net session02
02 asp.net session0202 asp.net session02
02 asp.net session02Mani Chaubey
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web DevelopmentHong Jiang
 
How to build a chat application with react js, nodejs, and socket.io
How to build a chat application with react js, nodejs, and socket.ioHow to build a chat application with react js, nodejs, and socket.io
How to build a chat application with react js, nodejs, and socket.ioKaty Slemon
 
README.MD for building the first purely digital mobile bank in Indonesia
README.MD for building the first purely digital mobile bank in Indonesia README.MD for building the first purely digital mobile bank in Indonesia
README.MD for building the first purely digital mobile bank in Indonesia Richard Radics
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019Matt Raible
 
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Matt Raible
 
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019Matt Raible
 
Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019Matt Raible
 
Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Lou Sacco
 
A realtime infrastructure for Android apps: Firebase may be what you need..an...
A realtime infrastructure for Android apps: Firebase may be what you need..an...A realtime infrastructure for Android apps: Firebase may be what you need..an...
A realtime infrastructure for Android apps: Firebase may be what you need..an...Alessandro Martellucci
 

What's hot (18)

How to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptHow to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScript
 
Building and deploying React applications
Building and deploying React applicationsBuilding and deploying React applications
Building and deploying React applications
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteor
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
 
Adding User Management to Node.js
Adding User Management to Node.jsAdding User Management to Node.js
Adding User Management to Node.js
 
20150812 4시간만에 따라해보는 windows 10 앱 개발
20150812  4시간만에 따라해보는 windows 10 앱 개발20150812  4시간만에 따라해보는 windows 10 앱 개발
20150812 4시간만에 따라해보는 windows 10 앱 개발
 
02 asp.net session02
02 asp.net session0202 asp.net session02
02 asp.net session02
 
Clojure Web Development
Clojure Web DevelopmentClojure Web Development
Clojure Web Development
 
How to build a chat application with react js, nodejs, and socket.io
How to build a chat application with react js, nodejs, and socket.ioHow to build a chat application with react js, nodejs, and socket.io
How to build a chat application with react js, nodejs, and socket.io
 
Vaadin & Web Components
Vaadin & Web ComponentsVaadin & Web Components
Vaadin & Web Components
 
README.MD for building the first purely digital mobile bank in Indonesia
README.MD for building the first purely digital mobile bank in Indonesia README.MD for building the first purely digital mobile bank in Indonesia
README.MD for building the first purely digital mobile bank in Indonesia
 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019
 
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018
 
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
 
Activity
ActivityActivity
Activity
 
Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019Front End Development for Back End Java Developers - NYJavaSIG 2019
Front End Development for Back End Java Developers - NYJavaSIG 2019
 
Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014
 
A realtime infrastructure for Android apps: Firebase may be what you need..an...
A realtime infrastructure for Android apps: Firebase may be what you need..an...A realtime infrastructure for Android apps: Firebase may be what you need..an...
A realtime infrastructure for Android apps: Firebase may be what you need..an...
 

Similar to Meteor.js Workshop by Dopravo

React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsMatteo Manchi
 
The End of Dinosaurs happened because of [a] Meteor
The End of Dinosaurs happened because of [a] MeteorThe End of Dinosaurs happened because of [a] Meteor
The End of Dinosaurs happened because of [a] MeteorAbderrazak BOUADMA
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN StackRob Davarnia
 
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...Codemotion
 
Meteor presentation
Meteor presentationMeteor presentation
Meteor presentationscandiweb
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]GDSC UofT Mississauga
 
Plone FSR
Plone FSRPlone FSR
Plone FSRfulv
 
CraftCamp for Students - Introduction to Meteor.js
CraftCamp for Students - Introduction to Meteor.jsCraftCamp for Students - Introduction to Meteor.js
CraftCamp for Students - Introduction to Meteor.jscraftworkz
 
Yeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web appsYeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web appsclimboid
 
Background Tasks with Worker Service
Background Tasks with Worker ServiceBackground Tasks with Worker Service
Background Tasks with Worker Servicessusere19c741
 
Service Worker 201 (en)
Service Worker 201 (en)Service Worker 201 (en)
Service Worker 201 (en)Chang W. Doh
 

Similar to Meteor.js Workshop by Dopravo (20)

METEOR 101
METEOR 101METEOR 101
METEOR 101
 
Meteor
MeteorMeteor
Meteor
 
React Native for multi-platform mobile applications
React Native for multi-platform mobile applicationsReact Native for multi-platform mobile applications
React Native for multi-platform mobile applications
 
Meteor
MeteorMeteor
Meteor
 
Mean stack Magics
Mean stack MagicsMean stack Magics
Mean stack Magics
 
Meteor Day Talk
Meteor Day TalkMeteor Day Talk
Meteor Day Talk
 
Basic API Creation with Node.JS
Basic API Creation with Node.JSBasic API Creation with Node.JS
Basic API Creation with Node.JS
 
The End of Dinosaurs happened because of [a] Meteor
The End of Dinosaurs happened because of [a] MeteorThe End of Dinosaurs happened because of [a] Meteor
The End of Dinosaurs happened because of [a] Meteor
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
 
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
 
Meteor
MeteorMeteor
Meteor
 
Meteor presentation
Meteor presentationMeteor presentation
Meteor presentation
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]
 
Plone FSR
Plone FSRPlone FSR
Plone FSR
 
Meteor Introduction - Ashish
Meteor Introduction - AshishMeteor Introduction - Ashish
Meteor Introduction - Ashish
 
CraftCamp for Students - Introduction to Meteor.js
CraftCamp for Students - Introduction to Meteor.jsCraftCamp for Students - Introduction to Meteor.js
CraftCamp for Students - Introduction to Meteor.js
 
Yeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web appsYeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web apps
 
Background Tasks with Worker Service
Background Tasks with Worker ServiceBackground Tasks with Worker Service
Background Tasks with Worker Service
 
React django
React djangoReact django
React django
 
Service Worker 201 (en)
Service Worker 201 (en)Service Worker 201 (en)
Service Worker 201 (en)
 

More from ArabNet ME

ArabNet Beirut - Keynote: Open Banking - To be or not to be? by Open Bank Pr...
ArabNet Beirut  - Keynote: Open Banking - To be or not to be? by Open Bank Pr...ArabNet Beirut  - Keynote: Open Banking - To be or not to be? by Open Bank Pr...
ArabNet Beirut - Keynote: Open Banking - To be or not to be? by Open Bank Pr...ArabNet ME
 
Tackling Cyber Threats in Banking Digitization by KRYPTON Security - ArabNet ...
Tackling Cyber Threats in Banking Digitization by KRYPTON Security - ArabNet ...Tackling Cyber Threats in Banking Digitization by KRYPTON Security - ArabNet ...
Tackling Cyber Threats in Banking Digitization by KRYPTON Security - ArabNet ...ArabNet ME
 
Keynote: Open Banking - To be or not to be? by Open Bank Project by ArabNet B...
Keynote: Open Banking - To be or not to be? by Open Bank Project by ArabNet B...Keynote: Open Banking - To be or not to be? by Open Bank Project by ArabNet B...
Keynote: Open Banking - To be or not to be? by Open Bank Project by ArabNet B...ArabNet ME
 
Keynote: Cyber Security in Banking by CyberQ at ArabNet Riyadh 2018
Keynote: Cyber Security in Banking by CyberQ at ArabNet Riyadh 2018Keynote: Cyber Security in Banking by CyberQ at ArabNet Riyadh 2018
Keynote: Cyber Security in Banking by CyberQ at ArabNet Riyadh 2018ArabNet ME
 
Keynote financial services in 2030 by Michelle Kactis- ArabNet Riyadh 2018
Keynote financial services in 2030 by Michelle Kactis- ArabNet Riyadh 2018Keynote financial services in 2030 by Michelle Kactis- ArabNet Riyadh 2018
Keynote financial services in 2030 by Michelle Kactis- ArabNet Riyadh 2018ArabNet ME
 
The Triangle to Media Success: How to Leverage your Edit, Ads and Audience to...
The Triangle to Media Success: How to Leverage your Edit, Ads and Audience to...The Triangle to Media Success: How to Leverage your Edit, Ads and Audience to...
The Triangle to Media Success: How to Leverage your Edit, Ads and Audience to...ArabNet ME
 
GDPR – Data vs Creative by Nexd
GDPR – Data vs Creative by NexdGDPR – Data vs Creative by Nexd
GDPR – Data vs Creative by NexdArabNet ME
 
Keynote: Why Open Banking/AI/AR is exciting is going to shape Payments and Fi...
Keynote: Why Open Banking/AI/AR is exciting is going to shape Payments and Fi...Keynote: Why Open Banking/AI/AR is exciting is going to shape Payments and Fi...
Keynote: Why Open Banking/AI/AR is exciting is going to shape Payments and Fi...ArabNet ME
 
Keynote: Raising the Bar on the Ethical Use of Data in Government at the Arab...
Keynote: Raising the Bar on the Ethical Use of Data in Government at the Arab...Keynote: Raising the Bar on the Ethical Use of Data in Government at the Arab...
Keynote: Raising the Bar on the Ethical Use of Data in Government at the Arab...ArabNet ME
 
Research: Smart Cities – What’s in it for the citizen? by McKinsey & Company ...
Research: Smart Cities – What’s in it for the citizen? by McKinsey & Company ...Research: Smart Cities – What’s in it for the citizen? by McKinsey & Company ...
Research: Smart Cities – What’s in it for the citizen? by McKinsey & Company ...ArabNet ME
 
what3words: The future of autonomy and voice control at ArabNet Digital Summi...
what3words: The future of autonomy and voice control at ArabNet Digital Summi...what3words: The future of autonomy and voice control at ArabNet Digital Summi...
what3words: The future of autonomy and voice control at ArabNet Digital Summi...ArabNet ME
 
Keynote: The State of the European Tech Industry at ArabNet Digital Summit 2018
Keynote: The State of the European Tech Industry at ArabNet Digital Summit 2018Keynote: The State of the European Tech Industry at ArabNet Digital Summit 2018
Keynote: The State of the European Tech Industry at ArabNet Digital Summit 2018ArabNet ME
 
Keynote: Alternative Funding: IPO vs ICO at ArabNet Digital Summit 2018
Keynote: Alternative Funding: IPO vs ICO at ArabNet Digital Summit 2018Keynote: Alternative Funding: IPO vs ICO at ArabNet Digital Summit 2018
Keynote: Alternative Funding: IPO vs ICO at ArabNet Digital Summit 2018ArabNet ME
 
Keynote: 10 Lessons Every Entrepreneur Must Learn by ConsenSys at ArabNet Bei...
Keynote: 10 Lessons Every Entrepreneur Must Learn by ConsenSys at ArabNet Bei...Keynote: 10 Lessons Every Entrepreneur Must Learn by ConsenSys at ArabNet Bei...
Keynote: 10 Lessons Every Entrepreneur Must Learn by ConsenSys at ArabNet Bei...ArabNet ME
 
Cryptocurrencies a Banking Perspective by Wardrobe Place Capital Management a...
Cryptocurrencies a Banking Perspective by Wardrobe Place Capital Management a...Cryptocurrencies a Banking Perspective by Wardrobe Place Capital Management a...
Cryptocurrencies a Banking Perspective by Wardrobe Place Capital Management a...ArabNet ME
 
Blockchain: Understanding the blockchain and its impact on financial services...
Blockchain: Understanding the blockchain and its impact on financial services...Blockchain: Understanding the blockchain and its impact on financial services...
Blockchain: Understanding the blockchain and its impact on financial services...ArabNet ME
 
Transformation Through Transportation by Hyperloop One at ArabNet Riyadh 2017
Transformation Through Transportation by Hyperloop One at ArabNet Riyadh 2017Transformation Through Transportation by Hyperloop One at ArabNet Riyadh 2017
Transformation Through Transportation by Hyperloop One at ArabNet Riyadh 2017ArabNet ME
 
Unlock Your Marketing Potential with the Power of AI by IBM at ArabNet Riyadh...
Unlock Your Marketing Potential with the Power of AI by IBM at ArabNet Riyadh...Unlock Your Marketing Potential with the Power of AI by IBM at ArabNet Riyadh...
Unlock Your Marketing Potential with the Power of AI by IBM at ArabNet Riyadh...ArabNet ME
 
E-commerce in a nutshell by ZID at ArabNet Riyadh 2017
E-commerce in a nutshell by ZID at ArabNet Riyadh 2017E-commerce in a nutshell by ZID at ArabNet Riyadh 2017
E-commerce in a nutshell by ZID at ArabNet Riyadh 2017ArabNet ME
 
Blockchain: Transforming Industries by Fintricity at ArabNet Riyadh 2017
Blockchain: Transforming Industries by Fintricity at ArabNet Riyadh 2017Blockchain: Transforming Industries by Fintricity at ArabNet Riyadh 2017
Blockchain: Transforming Industries by Fintricity at ArabNet Riyadh 2017ArabNet ME
 

More from ArabNet ME (20)

ArabNet Beirut - Keynote: Open Banking - To be or not to be? by Open Bank Pr...
ArabNet Beirut  - Keynote: Open Banking - To be or not to be? by Open Bank Pr...ArabNet Beirut  - Keynote: Open Banking - To be or not to be? by Open Bank Pr...
ArabNet Beirut - Keynote: Open Banking - To be or not to be? by Open Bank Pr...
 
Tackling Cyber Threats in Banking Digitization by KRYPTON Security - ArabNet ...
Tackling Cyber Threats in Banking Digitization by KRYPTON Security - ArabNet ...Tackling Cyber Threats in Banking Digitization by KRYPTON Security - ArabNet ...
Tackling Cyber Threats in Banking Digitization by KRYPTON Security - ArabNet ...
 
Keynote: Open Banking - To be or not to be? by Open Bank Project by ArabNet B...
Keynote: Open Banking - To be or not to be? by Open Bank Project by ArabNet B...Keynote: Open Banking - To be or not to be? by Open Bank Project by ArabNet B...
Keynote: Open Banking - To be or not to be? by Open Bank Project by ArabNet B...
 
Keynote: Cyber Security in Banking by CyberQ at ArabNet Riyadh 2018
Keynote: Cyber Security in Banking by CyberQ at ArabNet Riyadh 2018Keynote: Cyber Security in Banking by CyberQ at ArabNet Riyadh 2018
Keynote: Cyber Security in Banking by CyberQ at ArabNet Riyadh 2018
 
Keynote financial services in 2030 by Michelle Kactis- ArabNet Riyadh 2018
Keynote financial services in 2030 by Michelle Kactis- ArabNet Riyadh 2018Keynote financial services in 2030 by Michelle Kactis- ArabNet Riyadh 2018
Keynote financial services in 2030 by Michelle Kactis- ArabNet Riyadh 2018
 
The Triangle to Media Success: How to Leverage your Edit, Ads and Audience to...
The Triangle to Media Success: How to Leverage your Edit, Ads and Audience to...The Triangle to Media Success: How to Leverage your Edit, Ads and Audience to...
The Triangle to Media Success: How to Leverage your Edit, Ads and Audience to...
 
GDPR – Data vs Creative by Nexd
GDPR – Data vs Creative by NexdGDPR – Data vs Creative by Nexd
GDPR – Data vs Creative by Nexd
 
Keynote: Why Open Banking/AI/AR is exciting is going to shape Payments and Fi...
Keynote: Why Open Banking/AI/AR is exciting is going to shape Payments and Fi...Keynote: Why Open Banking/AI/AR is exciting is going to shape Payments and Fi...
Keynote: Why Open Banking/AI/AR is exciting is going to shape Payments and Fi...
 
Keynote: Raising the Bar on the Ethical Use of Data in Government at the Arab...
Keynote: Raising the Bar on the Ethical Use of Data in Government at the Arab...Keynote: Raising the Bar on the Ethical Use of Data in Government at the Arab...
Keynote: Raising the Bar on the Ethical Use of Data in Government at the Arab...
 
Research: Smart Cities – What’s in it for the citizen? by McKinsey & Company ...
Research: Smart Cities – What’s in it for the citizen? by McKinsey & Company ...Research: Smart Cities – What’s in it for the citizen? by McKinsey & Company ...
Research: Smart Cities – What’s in it for the citizen? by McKinsey & Company ...
 
what3words: The future of autonomy and voice control at ArabNet Digital Summi...
what3words: The future of autonomy and voice control at ArabNet Digital Summi...what3words: The future of autonomy and voice control at ArabNet Digital Summi...
what3words: The future of autonomy and voice control at ArabNet Digital Summi...
 
Keynote: The State of the European Tech Industry at ArabNet Digital Summit 2018
Keynote: The State of the European Tech Industry at ArabNet Digital Summit 2018Keynote: The State of the European Tech Industry at ArabNet Digital Summit 2018
Keynote: The State of the European Tech Industry at ArabNet Digital Summit 2018
 
Keynote: Alternative Funding: IPO vs ICO at ArabNet Digital Summit 2018
Keynote: Alternative Funding: IPO vs ICO at ArabNet Digital Summit 2018Keynote: Alternative Funding: IPO vs ICO at ArabNet Digital Summit 2018
Keynote: Alternative Funding: IPO vs ICO at ArabNet Digital Summit 2018
 
Keynote: 10 Lessons Every Entrepreneur Must Learn by ConsenSys at ArabNet Bei...
Keynote: 10 Lessons Every Entrepreneur Must Learn by ConsenSys at ArabNet Bei...Keynote: 10 Lessons Every Entrepreneur Must Learn by ConsenSys at ArabNet Bei...
Keynote: 10 Lessons Every Entrepreneur Must Learn by ConsenSys at ArabNet Bei...
 
Cryptocurrencies a Banking Perspective by Wardrobe Place Capital Management a...
Cryptocurrencies a Banking Perspective by Wardrobe Place Capital Management a...Cryptocurrencies a Banking Perspective by Wardrobe Place Capital Management a...
Cryptocurrencies a Banking Perspective by Wardrobe Place Capital Management a...
 
Blockchain: Understanding the blockchain and its impact on financial services...
Blockchain: Understanding the blockchain and its impact on financial services...Blockchain: Understanding the blockchain and its impact on financial services...
Blockchain: Understanding the blockchain and its impact on financial services...
 
Transformation Through Transportation by Hyperloop One at ArabNet Riyadh 2017
Transformation Through Transportation by Hyperloop One at ArabNet Riyadh 2017Transformation Through Transportation by Hyperloop One at ArabNet Riyadh 2017
Transformation Through Transportation by Hyperloop One at ArabNet Riyadh 2017
 
Unlock Your Marketing Potential with the Power of AI by IBM at ArabNet Riyadh...
Unlock Your Marketing Potential with the Power of AI by IBM at ArabNet Riyadh...Unlock Your Marketing Potential with the Power of AI by IBM at ArabNet Riyadh...
Unlock Your Marketing Potential with the Power of AI by IBM at ArabNet Riyadh...
 
E-commerce in a nutshell by ZID at ArabNet Riyadh 2017
E-commerce in a nutshell by ZID at ArabNet Riyadh 2017E-commerce in a nutshell by ZID at ArabNet Riyadh 2017
E-commerce in a nutshell by ZID at ArabNet Riyadh 2017
 
Blockchain: Transforming Industries by Fintricity at ArabNet Riyadh 2017
Blockchain: Transforming Industries by Fintricity at ArabNet Riyadh 2017Blockchain: Transforming Industries by Fintricity at ArabNet Riyadh 2017
Blockchain: Transforming Industries by Fintricity at ArabNet Riyadh 2017
 

Recently uploaded

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 

Recently uploaded (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 

Meteor.js Workshop by Dopravo

  • 1. Arabnetdesign+codeday Riyadh 11 Nov 2014 Meteor.js Building real time apps for web & mobile in a fraction of the time
  • 2. +
  • 4.
  • 5. 5 JawadAbdulsamad,Co-founder@KayfakCorp. JawadhasbeenusingMeteorsinceitsearlydaysandbuilttheoriginaldemosforKayfakappforweb&mobileinMeteor.HeistheRiyadh‘captain’fortheMeteorcommunityandisexcitedaboutthepotentialofMeteortomakerapidweb& mobileappdevelopmentaccessibletomorepeople. Jawad’sbackgroundisinmanagementconsulting.HeisfromLondon,hasanMAfromOxfordandpreviouslyworkedatMcKinsey,Ask.comandSTC. MohamedTahaIbrahim,Co-founder@Dopravo Mohamedco-foundedDopravobackin2008.HehasledseveraleBusinesssolutionsimplementationsinthegovernmentandprivatesectors.InhisfreetimeheenjoysdevelopingsolutionsinJavaScriptframeworkssuchas:Knockout.js, andAngularJS. Mohamed’sbackgroundisinRoboticsengineeringfromMonashUniversity. HOSTING TODAY’S WORKSHOP
  • 6. 6 1.Why Meteor? 2.What can I build with this? 3.Example app 4.Building a "todos" app in 30m 5.Q&A AGENDA
  • 7. 7 1.Why Meteor? 2.What can I build with this? 3.Example app 4.Building a "todos" app in 30m 5.Q&A AGENDA
  • 8. 8 Meteor is a complete open source platformfor building web and mobile appsin pure JavaScript
  • 9. 9 Build awesome user experiences Modern UI Browser & mobile Live updates Ultra responsive Easily integrate with libraries like famo.us and velocity.js to create a slick native experience Rapidly add mobile support and extend your app experience seamlessly onto tablet & smartphones Data reactively updates live on the page when it changes making it easy to create real time experiences Changes made on a client are reflected instantly using ‘latency compensation’ which reduces laggyperformance
  • 10. 10 Develop apps simply and quickly Radically less code One language everywhere Unified package system Hot deploys Write a apps in much fewer lines of code due to the reactive programming model extending from DB to client Simple APIs enable you to write simple javascriptand run it on both client and server Super-simple, reliable and integrated package system. A wealth of packages available to run on web & mobile Simple one-command deploys which trigger a ‘hot code reload’ across all browsers and mobile devices
  • 11. AGENDA 11 1.Why Meteor? 2.What can I build with this? 3.Example app 4.Building a "todos" app in 30m 5.Q&A
  • 12. WORKPOP: LA-BASED METEOR STARTUP 12 Description A simple tool for employers to hire employees for hourly tasks Funding $7.9m Evan Williams, Biz Stone & others What they said… “the most rapid prototyping, iteration and development we’ve seen from an early stage company” Dan Scholnick
  • 13. KAYFAK: ARABIC MESSAGING APP 13 Description Instant messaging app for the Arabic speaking market Current stage Pre-seed funding and private beta Find out more www.kayfak.co Meteor features used Meteor Cordova for iOS & Android
  • 14. 14 1.Why Meteor? 2.What can I build with this? 3.Example app 4.Building a "todos" app in 30m 5.Q&A AGENDA
  • 15. 15 DEMO 1 Illustreets.co.uk
  • 16. 16 DEMO 2 Meteor-todos
  • 17. 17 DEMO 3 Kayfakmobile app
  • 18. 18 1.Why Meteor? 2.What can I build with this? 3.Example app 4.Building a "todos" app in 30m 5.Q&A AGENDA
  • 19. GETTING CONNECTED 19 http://goo.gl/tIdk8V https://www.meteor.com/install Wifi: tbd Password: tbd
  • 20. YOUR FIRST METEOR APP 20 https://www.meteor.com/install Let’s walk through the official tutorial together and see how Meteor really works
  • 21. FIRST THINGS FIRST: INSTALL METEOR 21 curl https://install.meteor.com/ | sh Great, that was pretty easy. Now let’s build our first meteor app!
  • 22. STEP 1: CREATE AN APP 22 meteor create arabnet-todos This creates all the files you need to run your app: •arabnet-todos.js-> JS loaded on client & server •arabnet-todos.html-> where you define your view templates •arabnet-todos.css-> app styling •.meteor -> internal meteor files cd arabnet-todos meteor http://localhost:3000 Your app is running! Ready for a hotcode reload??
  • 23. STEP 2a: DEFINE YOUR VIEW TEMPLATES 23 <!--simple-todos.html --> <head> <title>ArabnettodoList</title> </head> <body> <div class="container"> <header> <h1>ArabnetTodoList</h1> </header> <ul> {{#each tasks}} {{> task}} {{/each}} </ul> </div> </body> <template name="task"> <li>{{text}}</li> </template> and tags are treated like regular HTML but code inside tags is parsed and compiled into ‘spacebars’ templates and can then be included elsewhere in HTML using or referenced in JS using // simple-todos.js if(Meteor.isClient) { // This code only runs on the client Template.body.helpers({ tasks: [ { text: "This is task 1"}, { text: "This is task 2"}, { text: "This is task 3"} ] }); } Add logic to your spacebars templates using curly braces {{ example }} Here we iterate over the tasks array defined in the taskshelper method in our javascript Here we created a JS helper called taskson Template.bodythat returns a simple array. We then call this in our template, and iterate over it to create the <ul> items which will eventually represent our todos
  • 24. STEP 2b: ADDING CSS 24 https://www.meteor.com/try/2 Let’s go to the tutorial page & copy some CSS to put into arabnet-todos.css This tutorial will focus on how to use Meteor so we’ll grab this ready-made CSS as a shortcut!
  • 25. STEP 3: COLLECTIONS 25 // simple-todos.js Tasks = newMongo.Collection("tasks"); if(Meteor.isClient) { // This code only runs on the client Template.body.helpers({ tasks: function() { returnTasks.find({}); } }); } // open Meteor mongo console $ meteor mongo $ db.tasks.insert({ text: "Hello world!", createdAt: newDate() }); Here we update the code to remove the text array containing the placeholder ‘todos’ and replacing it with a Meteor collectionin Mongo which exists on both server andthe client (mini-mongo) Here we will manually manipulate the mongoDBin order to see Meteor’s reactivityin action. Upon inserting a new task into the ‘tasks’ collection you will see your app immediately update and reflect this new task item on the screen using the template we defined in the previous step.
  • 26. STEP 4: FORMS & EVENTS 26 // Inside existing arabnet-todos.html file <header> <h1>TodoList</h1> <!--add a form below the h1 --> <form class="new-task"> <input type="text"name="text" placeholder="Type to add new tasks"/> </form> </header> // 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 vartext = event.target.text.value; Tasks.insert({ text: text, createdAt: newDate() // current time }); // Clear form event.target.text.value = ""; // Prevent default form submit returnfalse; } }); //Replace Template.body.helpersfind{} with this code to sort by time returnTasks.find({}, {sort: {createdAt: -1}}); The events API uses keys & event handlers like Jqueryso will be very familiar for users of JS MVC frameworks like Backbone. The cool thing is that we add the task item (“document” in Mongo) directly from the client (latency compensation) We add a form to the HTML giving it a class .new-taskwhich will be used in the JS file to capture the event & add new tasks to Mongo
  • 27. STEP 5: UPDATE & REMOVE 27 <!--replace the existing task template with this code --> <template name="task"> <li class="{{#if checked}}checked{{/if}}"> <button class="delete">&times;</button> <input type="checkbox"checked="{{checked}}" class="toggle-checked"/> <span class="text">{{text}}</span> </li> </template> // In the client code, below everything elseTemplate.task.events({ "click .toggle-checked": function() { // Set checked property to opposite of its current value Tasks.update(this._id, {$set: {checked: ! this.checked}}); }, "click .delete": function() { Tasks.remove(this._id); } }); Here we are simply adding a checkbox to enable users to indicate when a task is complete and can be removed from the list. We use Spacebars logic {{ #if checked }}to apply a class of .checkedto the <li> items. We also add a delete button In the JS file we now create an event which triggers when a task item’s checkbox is clicked and will update the task item’s corresponding ‘document’ in MongoDBto have an attribute of checked which will be set to the opposite of whatever its current value is. Similarly we create a delete event that removes the document from Mongo when it is clicked. this._idin an event grabs the current task (this) and _idgrabs its unique Mongo identifier field
  • 28. STEP 6: DEPLOY TO THE WEB! 28 meteor deploy your_app_name.meteor.com THAT’S IT!!! Your app just hit a devserver hosted by Meteor http://your_app_name.meteor.com Try it out on your Mac and mobile browser…
  • 29. STEP 7: RUNNING ON MOBILE 29 meteor install-sdkios Follow all the prompts to set up everything you need to run iosapps Sets up the app on your iOS device via xcode. Awesome. meteor add-platform ios meteor run ios meteor run ios-device This gets your app up and running on the iOS simulator
  • 30. STEP 8: USING SESSION AS A REACTIVE DATA STORE 30 <!--add the checkbox to <body> right below the h1 --> <label class="hide-completed"> <input type="checkbox" checked="{{hideCompleted}}"/>Hide Completed Tasks </label> <!--display the count at the end of the <h1> tag --> <h1>TodoList ({{incompleteCount}})</h1> // Add to Template.body.events "change .hide-completed": function(event) { Session.set("hideCompleted", event.target.checked); } // Replace the existing Template.body.helpersTemplate.body.helpers({ tasks: function() { if(Session.get("hideCompleted")) { // If hide completed is checked, filter tasks returnTasks.find({checked: {$ne: true}}, {sort: {createdAt: -1}}); } else{ // Otherwise, return all of the tasks returnTasks.find({}, {sort: {createdAt: -1}}); } }, hideCompleted: function() { returnSession.get("hideCompleted"); } }); // Add to Template.body.helpers incompleteCount: function() { returnTasks.find({checked: {$ne: true}}).count(); } Now we will add a checkbox & use session to store the completed state of each task. If hide completed is selected the list will be sorted and only incomplete tasks will be shown. We also use a similar technique to show the current count of incomplete tasks
  • 31. 31 1.Why Meteor? 2.What can I build with this? 3.Case study 4.Building a "todos" app in 30m 5.Q&A AGENDA
  • 32. RESOURCES & LINKS 32 •Discover Meteor (https://www.discovermeteor.com/) •Evented Mind (https://www.eventedmind.com/) •Meteor Hacks (https://meteorhacks.com/) •http://todomvc.com/ •www.dopravo.com •www.kayfak.co •Contact us: –jawad@kayfak.co –mohamed@dopravo.com