SlideShare a Scribd company logo
1 of 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

More Related Content

More from 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
 

More from 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
 

Recently uploaded

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 

Recently uploaded (20)

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 

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.