SlideShare a Scribd company logo
O'Reilly Fluent
Bradley Holt, Developer Advocate
Thursday, March 10, 2016
Offline-First Apps with PouchDB
@BradleyHolt
Why offline first?
Offline-First Apps with PouchDB
Offline-First Apps with PouchDB
Mobile First
Design for the smallest device first and then apply progressive enhancement techniques to
take advantage of larger screen sizes when available
Offline First
Design for offline usage first and then apply progressive enhancement techniques to take
advantage of network connectivity when available
Ubiquitous Connectivity
Why offline first in a world of ubiquitous connectivity?
The Eight Fallacies of Distributed Computing
1.  The network is reliable
2.  Latency is zero
3.  Bandwidth is infinite
4.  The network is secure
5.  Topology doesn't change
6.  There is one administrator
7.  Transport cost is zero
8.  The network is homogeneous
@BradleyHolt
Mobile Backend
What happens when your mobile backend service is unreachable?
Benefits of Offline First
Faster User Experience
Better, faster user experience — both offline and online
Works Offline
Ability to disconnect and continue to work offline
Battery and Bandwidth
Limited access to power and communications infrastructure in disaster scenarios
Offline-First Patterns and
Anti-Patterns
Offline-First Apps with PouchDB
Offline-First Apps with PouchDB
Offline-First Apps with PouchDB
Offline-First Apps with PouchDB
Offline-First Apps with PouchDB
Tools and Use Cases
CouchDB Replication Protocol
@BradleyHolt
Cloudant SyncCouchDB PouchDB
CouchDB Replication Protocol
CouchDB
Offline-First Apps with PouchDB
@BradleyHolt
PouchDB Code Examples
github.com/bradley-holt/offline-first
Offline-First Apps with PouchDB
JSON Documents
{

_id: "6EF9D2B0-13D3-1378-8D30-39E3CE0B36C2",

_rev: "1-0b457efcf82fb29492ef927ba5b6ee15",

type: "Feature",

geometry: {

type: "Point",

coordinates: [

-71.1028,

42.3691

]

},

properties: {

session_id: "3486b13f-7b8a-8a96-dfbf-9b82800e367f",

timestamp: 1422928591717

}

}
@BradleyHolt
Creating a PouchDB Database
var db = new PouchDB("smart-meter");
@BradleyHolt
Creating a New Document
var db = new PouchDB("smart-meter");
db.put({
_id: "2014-11-12T23:27:03.794Z",
kilowatt_hours: 14
}).then(function() {
console.log("Document created");
}).catch(function(error) {
console.log(error);
});
@BradleyHolt
Updating a Document
db.put({
_id: "2014-11-12T23:27:03.794Z",
kilowatt_hours: 14
}).then(function(response) {
return db.get(response.id);
}).then(function(doc) {
// Update the value for kilowatt hours
doc.kilowatt_hours = 15;
// Put the document back to the database
return db.put(doc);
}).catch(function(error) {
console.log(error);
});
@BradleyHolt
Querying a Database with allDocs
db.bulkDocs([
{_id: "2014-11-12T23:27:03.794Z", kilowatt_hours: 14},
{_id: "2014-11-13T00:52:01.471Z", kilowatt_hours: 15},
{_id: "2014-11-13T01:39:28.911Z", kilowatt_hours: 16},
{_id: "2014-11-13T02:52:01.471Z", kilowatt_hours: 17}
]).then(function(result) {
// Get all documents
return db.allDocs({include_docs: true});
}).then(function(response) {
console.log(response);
}).catch(function(error) {
console.log(error);
});
@BradleyHolt
allDocs Options
§  include_docs
– conflicts
– attachments
§  startkey
§  endkey
§  inclusive_end
(true by default)
§  limit
§  skip
§  descending
§  key
§  keys
@BradleyHolt
PouchDB Data Storage Limits
@BradleyHolt
Firefox Chrome Opera 15+ Internet
Exporer
10+
iOS Safari Safari
(desktop)
Android PhoneGap /
Cordova
Data
Storage
Limit
50MB
(more with
user
permission)
calculated calculated
250MB
(prompts
user at 10
MB)
50MB
(prompts
user at 5MB
and at
increments)
unlimited
(prompts
user at 5MB
and at
increments)
calculated /
200MB
unlimited
Adapter IndexedDB
IndexedDB
/ WebSQL
IndexedDB
/ WebSQL
IndexedDB WebSQL WebSQL
IndexedDB /
WebSQL
SQLite
Replication
Apache CouchDB
CouchDB is a document database featuring an HTTP API, JSON documents,
and peer-to-peer replication
@BradleyHolt
Offline-First Apps with PouchDB
Creating a Remote PouchDB Database
var remoteDb = new PouchDB("https://bradley-holt.cloudant.com/smart-meter");
@BradleyHolt
Cross-Origin Resource Sharing (CORS)
A security restriction implemented by browsers on cross-site HTTP requests
@BradleyHolt
Bidirectional Replication
@BradleyHolt
Bidirectional Replication
db.sync(remoteDb, {
live: false,
retry: false
}).on("change", function(info) {
// Replication has written a new document
console.log(info);
}).on("complete", function(info) {
// Replication has complete or been cancelled
console.log(info);
}).on("error", function(error) {
// Replication has stopped due to an unrecoverable failure
console.log(error);
});
@BradleyHolt
Live Replication
@BradleyHolt
Live Replication
var sync = db.sync(remoteDb, {
live: true,
retry: true
}).on("change", function(info) {
// Replication has written a new document
console.log(info);
}).on("complete", function(info) {
// Replication has complete or been cancelled
console.log(info);
}).on("error", function(error) {
// Replication has stopped due to an unrecoverable failure
console.log(error);
});
@BradleyHolt
Filtered Replication
@BradleyHolt
Filtered Replication
db.replicate.to(remoteDb, {
filter: function(doc) {
return doc._id >= "2014-11-13T00:00:00.000Z";
}
}).on("change", function(info) {
// Replication has written a new document
console.log(info);
}).on("complete", function(info) {
// Replication has complete or been cancelled
console.log(info);
});
@BradleyHolt
One Database Per User
@BradleyHolt
Clemmie
Danyel
Shelba
Manuel
Francis
Marissa
Mitchel
Georgianne
Garnet
Audrey
Kalyn
Offline-First Apps with PouchDB
Boilerplates & Tools
§  Frontend Web Apps
–  React Boilerplate with Service Workers
<https://github.com/mbrio/react-boilerplate/tree/react-0.13-flummox-service>
§  Backend Web Apps
–  PouchDB npm Package
<https://www.npmjs.com/package/pouchdb>
–  PouchDB Server npm Package
<https://www.npmjs.com/package/pouchdb-server>
§  Mobile Apps
–  PouchDB for Ionic Framework
<https://github.com/nolanlawson/pouchdb-ionic>
–  "Hello world" Cordova app with PouchDB
<https://github.com/nolanlawson/pouchdb-cordova-hello-world>
–  "Hello world" Cordova app with PouchDB, using the SQLite Plugin
<https://github.com/nolanlawson/pouchdb-cordova-hello-world-with-sqlite-plugin>
–  Cloudant FoodTracker (uses Cloudant Sync for iOS)
<https://github.com/ibm-cds-labs/cloudant-food-tracker>
§  Desktop Apps
–  PouchDB for Electron (formerly Atom Shell)
<https://github.com/nolanlawson/pouchdb-electron>
–  PouchDB for Chrome packaged apps
<https://github.com/nolanlawson/pouchdb-chrome-app>
–  "Hello world" Chrome app with PouchDB
<https://github.com/nolanlawson/pouchdb-chrome-app-hello-world>
–  PouchDB for NW.js (aka Node-Webkit)
<https://github.com/nolanlawson/pouchdb-nw>
§  Internet of Things (IoT) Apps
–  Node-RED
<http://nodered.org/>
@BradleyHolt
Cloudant FoodTracker
An offline-first demo app built with Swift and Cloudant Sync for iOS
Offline-First Apps with PouchDB
Image Credits
§  A mockup of the golden Apple iPhone 5S by Zach Vega,
on Wikimedia Commons
<https://commons.wikimedia.org/wiki/File:IPhone_5s.png>
§  Joan Touzet (@wohali), ASF Member, CouchDB PMC Member
<https://twitter.com/wohali/status/595689720933445632>
§  Device landscape by Jeremy Keith, on Flickr
<https://flic.kr/p/anLcHu>
§  Cloud Formation Over the Adirondacks by Bradley Holt,
on Twitter
<https://twitter.com/BradleyHolt/status/623030107679002624>
§  Cell phone tower by Gary Lerude, on Flickr
<https://flic.kr/p/crL7TN>
§  Pneumatic Central by Sleestak, on Flickr
<https://flic.kr/p/mRvRQ>
§  Colunas by Daniel Zanini H., on Flickr <https://flic.kr/p/5ZwHWv>
§  Speed DLR on Doklands by Umberto Rotundo, on Flickr
<https://flic.kr/p/7GmcUo>
§  Waterfall by Paulo Valdivieso, on Flickr <https://flic.kr/p/oNkvRP>
§  Wildfire by U.S. Fish and Wildlife Service Southeast Region,
on Flickr <https://flic.kr/p/8zkWGd>
§  Arduino Uno by Pete Prodoehl, on Flickr
<https://flic.kr/p/a3ky7E>
§  Warning by Stefano Brivio, on Flickr <https://flic.kr/p/tuBHA>
@BradleyHolt
Questions?
@BradleyHolt

More Related Content

PDF
Easy Data for PhoneGap apps with PouchDB
PDF
Offline first, the painless way
PDF
Offline-First Mobile Web Apps with PouchDB, IBM Cloudant, and IBM Bluemix
 
PPTX
Untangling spring week12
PDF
Cloud-Native Drupal: a survival guide
PPTX
Untangling fall2017 week2
ZIP
Drupal, Android and iPhone
PDF
Case study: JBoss Developer Studio, an IDE for Web, Mobile and Cloud applicat...
Easy Data for PhoneGap apps with PouchDB
Offline first, the painless way
Offline-First Mobile Web Apps with PouchDB, IBM Cloudant, and IBM Bluemix
 
Untangling spring week12
Cloud-Native Drupal: a survival guide
Untangling fall2017 week2
Drupal, Android and iPhone
Case study: JBoss Developer Studio, an IDE for Web, Mobile and Cloud applicat...

What's hot (20)

PPTX
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
PDF
Drupal, git and sanity
PDF
Vagrant for Effective DevOps Culture
PDF
Become a Better Developer with Debugging Techniques for Drupal (and more!)
PDF
WordPress at Scale Webinar
PDF
Queue Everything and Please Everyone
KEY
Building production-quality apps with Node.js
ODP
Version Controlling
PDF
Migration from Drupal 7 to Drupal 8 - How Docker can save our lives!
PDF
On Prem Container Cloud - Lessons Learned
PPTX
Short-Training asp.net vNext
PDF
Staying on Topic - Invoke OpenFaaS functions with Kafka
PDF
Migrating NYSenate.gov
PDF
Render-as-You-Fetch
PDF
Docker Dhahran November 2017 meetup
PDF
Git 101 for CloudStack
PPTX
Untangling - fall2017 - week 8
PDF
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
PPTX
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
PDF
Stop making, start composing - Using Composer for Drupal development
Battle Of The Microservice Frameworks: Micronaut versus Quarkus edition!
Drupal, git and sanity
Vagrant for Effective DevOps Culture
Become a Better Developer with Debugging Techniques for Drupal (and more!)
WordPress at Scale Webinar
Queue Everything and Please Everyone
Building production-quality apps with Node.js
Version Controlling
Migration from Drupal 7 to Drupal 8 - How Docker can save our lives!
On Prem Container Cloud - Lessons Learned
Short-Training asp.net vNext
Staying on Topic - Invoke OpenFaaS functions with Kafka
Migrating NYSenate.gov
Render-as-You-Fetch
Docker Dhahran November 2017 meetup
Git 101 for CloudStack
Untangling - fall2017 - week 8
Ozone-Wayland Support in Chromium (GENIVI 13th All Member Meeting & AMM Open ...
Puppet Camp Silicon Valley 2015: How TubeMogul reached 10,000 Puppet Deployme...
Stop making, start composing - Using Composer for Drupal development
Ad

Viewers also liked (7)

PPTX
Couch DB/PouchDB approach for hybrid mobile applications
PDF
Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...
PDF
Pouch db tdc2016
PPTX
Easy offline-first mobile and desktop web apps with PouchDB
PDF
Apache CouchDB
PDF
Device Synchronization with Javascript and PouchDB
PPT
How to Embed a PowerPoint Presentation Using SlideShare
Couch DB/PouchDB approach for hybrid mobile applications
Tech Webinar: Offline First: Creare un'app Phonegap che funzioni offline e si...
Pouch db tdc2016
Easy offline-first mobile and desktop web apps with PouchDB
Apache CouchDB
Device Synchronization with Javascript and PouchDB
How to Embed a PowerPoint Presentation Using SlideShare
Ad

Similar to Offline-First Apps with PouchDB (20)

PDF
Offline first solutions highland web group - december 2015
PPTX
Ui5 con@Banglore - UI5 App with Offline Storage using PouchDB
PPTX
Mobile App Development With IBM Cloudant
PPTX
Offline first development - Glasgow PHP - January 2016
PDF
NoSQL on the move
KEY
OSCON 2011 CouchApps
PDF
Velocity EU 2014 — Offline-first web apps
PPTX
Offline Webapps
PDF
PouchDB - The Database That Syncs
PPTX
Academy PRO: HTML5 Data storage
PDF
CouchDB Mobile - From Couch to 5K in 1 Hour
PPTX
Offline First Apps With Couchbase Mobile and Xamarin
ODP
CouchApp - Build scalable web applications and relax
PDF
Couchbas for dummies
PDF
Economies of Scaling Software
PPTX
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
PPTX
MongoDB Mobile: Bringing the Power of MongoDB to Your Device
PPTX
MongoDB.local Seattle 2019: MongoDB Mobile: Bringing the Power of MongoDB to ...
PPT
No sql Database
PDF
MongoDB.local Austin 2018: MongoDB Mobile: Bringing the Power of MongoDB to Y...
Offline first solutions highland web group - december 2015
Ui5 con@Banglore - UI5 App with Offline Storage using PouchDB
Mobile App Development With IBM Cloudant
Offline first development - Glasgow PHP - January 2016
NoSQL on the move
OSCON 2011 CouchApps
Velocity EU 2014 — Offline-first web apps
Offline Webapps
PouchDB - The Database That Syncs
Academy PRO: HTML5 Data storage
CouchDB Mobile - From Couch to 5K in 1 Hour
Offline First Apps With Couchbase Mobile and Xamarin
CouchApp - Build scalable web applications and relax
Couchbas for dummies
Economies of Scaling Software
Full Stack Development With Node.Js And NoSQL (Nic Raboy & Arun Gupta)
MongoDB Mobile: Bringing the Power of MongoDB to Your Device
MongoDB.local Seattle 2019: MongoDB Mobile: Bringing the Power of MongoDB to ...
No sql Database
MongoDB.local Austin 2018: MongoDB Mobile: Bringing the Power of MongoDB to Y...

More from Paula Peña (She, Her, Hers) (8)

PDF
Getting Started with Cloud Foundry on Bluemix
PPTX
Building Next Gen Applications and Microservices
PPTX
Bluemix DevOps Services
PPTX
Bluemix Garage Method
PPTX
Blockchain Explained for Devlopers
PPTX
The App Evolution Continues
PPTX
App Development Evolution: What has changed?
PDF
Building an IOT app using MQTT
Getting Started with Cloud Foundry on Bluemix
Building Next Gen Applications and Microservices
Bluemix DevOps Services
Bluemix Garage Method
Blockchain Explained for Devlopers
The App Evolution Continues
App Development Evolution: What has changed?
Building an IOT app using MQTT

Recently uploaded (20)

PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Modernizing your data center with Dell and AMD
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Encapsulation theory and applications.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PPTX
Big Data Technologies - Introduction.pptx
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Empathic Computing: Creating Shared Understanding
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Electronic commerce courselecture one. Pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
20250228 LYD VKU AI Blended-Learning.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Unlocking AI with Model Context Protocol (MCP)
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Advanced methodologies resolving dimensionality complications for autism neur...
Modernizing your data center with Dell and AMD
CIFDAQ's Market Insight: SEC Turns Pro Crypto
NewMind AI Monthly Chronicles - July 2025
Encapsulation theory and applications.pdf
Understanding_Digital_Forensics_Presentation.pptx
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Big Data Technologies - Introduction.pptx
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
The AUB Centre for AI in Media Proposal.docx
NewMind AI Weekly Chronicles - August'25 Week I
Empathic Computing: Creating Shared Understanding

Offline-First Apps with PouchDB

  • 1. O'Reilly Fluent Bradley Holt, Developer Advocate Thursday, March 10, 2016 Offline-First Apps with PouchDB @BradleyHolt
  • 5. Mobile First Design for the smallest device first and then apply progressive enhancement techniques to take advantage of larger screen sizes when available
  • 6. Offline First Design for offline usage first and then apply progressive enhancement techniques to take advantage of network connectivity when available
  • 7. Ubiquitous Connectivity Why offline first in a world of ubiquitous connectivity?
  • 8. The Eight Fallacies of Distributed Computing 1.  The network is reliable 2.  Latency is zero 3.  Bandwidth is infinite 4.  The network is secure 5.  Topology doesn't change 6.  There is one administrator 7.  Transport cost is zero 8.  The network is homogeneous @BradleyHolt
  • 9. Mobile Backend What happens when your mobile backend service is unreachable?
  • 11. Faster User Experience Better, faster user experience — both offline and online
  • 12. Works Offline Ability to disconnect and continue to work offline
  • 13. Battery and Bandwidth Limited access to power and communications infrastructure in disaster scenarios
  • 20. Tools and Use Cases
  • 21. CouchDB Replication Protocol @BradleyHolt Cloudant SyncCouchDB PouchDB CouchDB Replication Protocol CouchDB
  • 26. JSON Documents {
 _id: "6EF9D2B0-13D3-1378-8D30-39E3CE0B36C2",
 _rev: "1-0b457efcf82fb29492ef927ba5b6ee15",
 type: "Feature",
 geometry: {
 type: "Point",
 coordinates: [
 -71.1028,
 42.3691
 ]
 },
 properties: {
 session_id: "3486b13f-7b8a-8a96-dfbf-9b82800e367f",
 timestamp: 1422928591717
 }
 } @BradleyHolt
  • 27. Creating a PouchDB Database var db = new PouchDB("smart-meter"); @BradleyHolt
  • 28. Creating a New Document var db = new PouchDB("smart-meter"); db.put({ _id: "2014-11-12T23:27:03.794Z", kilowatt_hours: 14 }).then(function() { console.log("Document created"); }).catch(function(error) { console.log(error); }); @BradleyHolt
  • 29. Updating a Document db.put({ _id: "2014-11-12T23:27:03.794Z", kilowatt_hours: 14 }).then(function(response) { return db.get(response.id); }).then(function(doc) { // Update the value for kilowatt hours doc.kilowatt_hours = 15; // Put the document back to the database return db.put(doc); }).catch(function(error) { console.log(error); }); @BradleyHolt
  • 30. Querying a Database with allDocs db.bulkDocs([ {_id: "2014-11-12T23:27:03.794Z", kilowatt_hours: 14}, {_id: "2014-11-13T00:52:01.471Z", kilowatt_hours: 15}, {_id: "2014-11-13T01:39:28.911Z", kilowatt_hours: 16}, {_id: "2014-11-13T02:52:01.471Z", kilowatt_hours: 17} ]).then(function(result) { // Get all documents return db.allDocs({include_docs: true}); }).then(function(response) { console.log(response); }).catch(function(error) { console.log(error); }); @BradleyHolt
  • 31. allDocs Options §  include_docs – conflicts – attachments §  startkey §  endkey §  inclusive_end (true by default) §  limit §  skip §  descending §  key §  keys @BradleyHolt
  • 32. PouchDB Data Storage Limits @BradleyHolt Firefox Chrome Opera 15+ Internet Exporer 10+ iOS Safari Safari (desktop) Android PhoneGap / Cordova Data Storage Limit 50MB (more with user permission) calculated calculated 250MB (prompts user at 10 MB) 50MB (prompts user at 5MB and at increments) unlimited (prompts user at 5MB and at increments) calculated / 200MB unlimited Adapter IndexedDB IndexedDB / WebSQL IndexedDB / WebSQL IndexedDB WebSQL WebSQL IndexedDB / WebSQL SQLite
  • 34. Apache CouchDB CouchDB is a document database featuring an HTTP API, JSON documents, and peer-to-peer replication @BradleyHolt
  • 36. Creating a Remote PouchDB Database var remoteDb = new PouchDB("https://bradley-holt.cloudant.com/smart-meter"); @BradleyHolt
  • 37. Cross-Origin Resource Sharing (CORS) A security restriction implemented by browsers on cross-site HTTP requests @BradleyHolt
  • 39. Bidirectional Replication db.sync(remoteDb, { live: false, retry: false }).on("change", function(info) { // Replication has written a new document console.log(info); }).on("complete", function(info) { // Replication has complete or been cancelled console.log(info); }).on("error", function(error) { // Replication has stopped due to an unrecoverable failure console.log(error); }); @BradleyHolt
  • 41. Live Replication var sync = db.sync(remoteDb, { live: true, retry: true }).on("change", function(info) { // Replication has written a new document console.log(info); }).on("complete", function(info) { // Replication has complete or been cancelled console.log(info); }).on("error", function(error) { // Replication has stopped due to an unrecoverable failure console.log(error); }); @BradleyHolt
  • 43. Filtered Replication db.replicate.to(remoteDb, { filter: function(doc) { return doc._id >= "2014-11-13T00:00:00.000Z"; } }).on("change", function(info) { // Replication has written a new document console.log(info); }).on("complete", function(info) { // Replication has complete or been cancelled console.log(info); }); @BradleyHolt
  • 44. One Database Per User @BradleyHolt Clemmie Danyel Shelba Manuel Francis Marissa Mitchel Georgianne Garnet Audrey Kalyn
  • 46. Boilerplates & Tools §  Frontend Web Apps –  React Boilerplate with Service Workers <https://github.com/mbrio/react-boilerplate/tree/react-0.13-flummox-service> §  Backend Web Apps –  PouchDB npm Package <https://www.npmjs.com/package/pouchdb> –  PouchDB Server npm Package <https://www.npmjs.com/package/pouchdb-server> §  Mobile Apps –  PouchDB for Ionic Framework <https://github.com/nolanlawson/pouchdb-ionic> –  "Hello world" Cordova app with PouchDB <https://github.com/nolanlawson/pouchdb-cordova-hello-world> –  "Hello world" Cordova app with PouchDB, using the SQLite Plugin <https://github.com/nolanlawson/pouchdb-cordova-hello-world-with-sqlite-plugin> –  Cloudant FoodTracker (uses Cloudant Sync for iOS) <https://github.com/ibm-cds-labs/cloudant-food-tracker> §  Desktop Apps –  PouchDB for Electron (formerly Atom Shell) <https://github.com/nolanlawson/pouchdb-electron> –  PouchDB for Chrome packaged apps <https://github.com/nolanlawson/pouchdb-chrome-app> –  "Hello world" Chrome app with PouchDB <https://github.com/nolanlawson/pouchdb-chrome-app-hello-world> –  PouchDB for NW.js (aka Node-Webkit) <https://github.com/nolanlawson/pouchdb-nw> §  Internet of Things (IoT) Apps –  Node-RED <http://nodered.org/> @BradleyHolt
  • 47. Cloudant FoodTracker An offline-first demo app built with Swift and Cloudant Sync for iOS
  • 49. Image Credits §  A mockup of the golden Apple iPhone 5S by Zach Vega, on Wikimedia Commons <https://commons.wikimedia.org/wiki/File:IPhone_5s.png> §  Joan Touzet (@wohali), ASF Member, CouchDB PMC Member <https://twitter.com/wohali/status/595689720933445632> §  Device landscape by Jeremy Keith, on Flickr <https://flic.kr/p/anLcHu> §  Cloud Formation Over the Adirondacks by Bradley Holt, on Twitter <https://twitter.com/BradleyHolt/status/623030107679002624> §  Cell phone tower by Gary Lerude, on Flickr <https://flic.kr/p/crL7TN> §  Pneumatic Central by Sleestak, on Flickr <https://flic.kr/p/mRvRQ> §  Colunas by Daniel Zanini H., on Flickr <https://flic.kr/p/5ZwHWv> §  Speed DLR on Doklands by Umberto Rotundo, on Flickr <https://flic.kr/p/7GmcUo> §  Waterfall by Paulo Valdivieso, on Flickr <https://flic.kr/p/oNkvRP> §  Wildfire by U.S. Fish and Wildlife Service Southeast Region, on Flickr <https://flic.kr/p/8zkWGd> §  Arduino Uno by Pete Prodoehl, on Flickr <https://flic.kr/p/a3ky7E> §  Warning by Stefano Brivio, on Flickr <https://flic.kr/p/tuBHA> @BradleyHolt