SlideShare uma empresa Scribd logo
1 de 23
Building a GeoChat mobile app  and the birth of a web framework Aaron Murray & Eric Schoffstall @WeAreFractal
What are we building? Chattr is a mobile chat app that lets you open up a chatroom based on your geographic location What are our technical requirements? Node.js  Websockets Native Mobile App for iOS, Android Coffescript friendly
What do we need? Native Mobile Bridge Titanium, Phonegap Mobile Web Framework  JQuery Mobile, Titanium, Sencha Touch, Dojo Mobile, Zepto.js Communication Socket.io, Now.js Database MongoDB, CouchDB, Redis ORM  Mongoose Application Framework Express, SocketStream
Native Mobile Bridge Titanium Mobile (http://www.appcelerator.com/products/) Compile JS + HTML + CSS + Titanium APIs to native code Native UI Use your web skills to build
Native Mobile Bridge Titanium Mobile (http://www.appcelerator.com/products/)
Native Mobile Bridge http://www.phonegap.com/ ACTUALLY native web technologies  Wrapped in a webkit renderer Bridged to iOS and android  Have to run vanilla eclipse (not aptana) Android emulator is absurd – debug on your phone
JQuery + Now.js PoChttps://github.com/wearefractal/Chattr-JQuery-PoC
JQuery + Now.js PoChttps://github.com/wearefractal/Chattr-JQuery-PoC varfs= require('fs'); var server = require('http').createServer(function(req, response){   fs.readFile(__dirname+'/chattr.html', function(err, data){     response.writeHead(200, {'Content-Type':'text/html'});      response.write(data);      response.end();   }); }); server.listen(8080); varnowjs= require("now"); var everyone =nowjs.initialize(server); everyone.on("connect", function(){   console.log("Joined: " +this.now.name); }); everyone.on("disconnect", function(){   console.log("Left: " +this.now.name); }); everyone.now.distributeMessage=function(message){   everyone.now.receiveMessage(this.now.name, message); };
JQuery + Now.js PoChttps://github.com/wearefractal/Chattr-JQuery-PoC Pros ,[object Object]
  Looks good Cons ,[object Object]
  Beta = alpha
  Orientation on device rotate etc
 Just not quite there,[object Object]
JQuery-compatible syntax
Decent skin OOTB Cons ,[object Object],[object Object]
  Good lookingCons ,[object Object]
  Licensing ,[object Object]
  Has baked-in grouping(pub-sub)Cons ,[object Object]
  Almost 2k LoC – WTF??We went with http://socket.io/
Database http://www.mongodb.org/ ,[object Object]
 Dynamic Schemas, Auto-sharding, Map-reduce, Geo support
 Best for storing structured data
 Best drop-in replacement for MySQL or similar imo

Mais conteúdo relacionado

Mais de wearefractal

nodester Architecture overview & roadmap
nodester Architecture overview & roadmapnodester Architecture overview & roadmap
nodester Architecture overview & roadmapwearefractal
 
Jade & Javascript templating
Jade & Javascript templatingJade & Javascript templating
Jade & Javascript templatingwearefractal
 
Fusker - A NodeJS Security Framework
Fusker - A NodeJS Security FrameworkFusker - A NodeJS Security Framework
Fusker - A NodeJS Security Frameworkwearefractal
 

Mais de wearefractal (7)

Bdd spex
Bdd spexBdd spex
Bdd spex
 
Novajs
NovajsNovajs
Novajs
 
nodester Architecture overview & roadmap
nodester Architecture overview & roadmapnodester Architecture overview & roadmap
nodester Architecture overview & roadmap
 
Spine.js
Spine.jsSpine.js
Spine.js
 
Jade & Javascript templating
Jade & Javascript templatingJade & Javascript templating
Jade & Javascript templating
 
ChanJS
ChanJSChanJS
ChanJS
 
Fusker - A NodeJS Security Framework
Fusker - A NodeJS Security FrameworkFusker - A NodeJS Security Framework
Fusker - A NodeJS Security Framework
 

Último

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 

Último (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

Geo chat

  • 1. Building a GeoChat mobile app and the birth of a web framework Aaron Murray & Eric Schoffstall @WeAreFractal
  • 2. What are we building? Chattr is a mobile chat app that lets you open up a chatroom based on your geographic location What are our technical requirements? Node.js Websockets Native Mobile App for iOS, Android Coffescript friendly
  • 3. What do we need? Native Mobile Bridge Titanium, Phonegap Mobile Web Framework JQuery Mobile, Titanium, Sencha Touch, Dojo Mobile, Zepto.js Communication Socket.io, Now.js Database MongoDB, CouchDB, Redis ORM Mongoose Application Framework Express, SocketStream
  • 4. Native Mobile Bridge Titanium Mobile (http://www.appcelerator.com/products/) Compile JS + HTML + CSS + Titanium APIs to native code Native UI Use your web skills to build
  • 5. Native Mobile Bridge Titanium Mobile (http://www.appcelerator.com/products/)
  • 6. Native Mobile Bridge http://www.phonegap.com/ ACTUALLY native web technologies Wrapped in a webkit renderer Bridged to iOS and android Have to run vanilla eclipse (not aptana) Android emulator is absurd – debug on your phone
  • 7. JQuery + Now.js PoChttps://github.com/wearefractal/Chattr-JQuery-PoC
  • 8. JQuery + Now.js PoChttps://github.com/wearefractal/Chattr-JQuery-PoC varfs= require('fs'); var server = require('http').createServer(function(req, response){   fs.readFile(__dirname+'/chattr.html', function(err, data){     response.writeHead(200, {'Content-Type':'text/html'});     response.write(data);     response.end();   }); }); server.listen(8080); varnowjs= require("now"); var everyone =nowjs.initialize(server); everyone.on("connect", function(){   console.log("Joined: " +this.now.name); }); everyone.on("disconnect", function(){   console.log("Left: " +this.now.name); }); everyone.now.distributeMessage=function(message){   everyone.now.receiveMessage(this.now.name, message); };
  • 9.
  • 10.
  • 11. Beta = alpha
  • 12. Orientation on device rotate etc
  • 13.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19. Almost 2k LoC – WTF??We went with http://socket.io/
  • 20.
  • 21. Dynamic Schemas, Auto-sharding, Map-reduce, Geo support
  • 22. Best for storing structured data
  • 23. Best drop-in replacement for MySQL or similar imo
  • 24.
  • 25.
  • 26.
  • 27. 3rd party modules
  • 28. Projects built on it
  • 29.
  • 30. Focus on routing, view rendering, etc do not need
  • 31.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37. o. = jquery-like convienence lib for both client and server
  • 38. single entry-point for incoming data, all data is sanitized before it’s accesed by services
  • 39. only models are passed from client to server, no loose vars
  • 41. obfuscationModelRequest {   module: 'Chat',   model: 'Chatroom',   type: 'find',   query: {   },   mid: 'SessionID'}
  • 42.
  • 43. Orchid web framework
  • 44.