Slide 1

Slide 1 text

Dimgba Kalu / @dkdimgba Austine Iyke / @austynsx

Slide 2

Slide 2 text

Dimgba – is the Co-Founder at ProJaro / @projarong. He is developer and loves everything PHP and JavaScript Austin – is a developer at ProJaro / @projarong. He enjoys the flexibility of JS and programs with PHP and Python

Slide 3

Slide 3 text

 Definitions  Common Practices  Offline Data persistent methods  Available offline data persistence tools

Slide 4

Slide 4 text

 Persistent Data denotes information that is infrequently accessed and not likely to be modified. The opposite of this is dynamic data (also known as transactional data) where information is asynchronously changed as further updates to the information become available ◦ https://en.wikipedia.org/wiki/Persistent_data

Slide 5

Slide 5 text

 CRUD - Create, Read, Update and Delete  Each letter in the acronym can map to a standard SQL statement and HTTP method:  Typically we employ CRUD via RESTful APIs Operation` SQL HTTP Create INSERT PUT / POST Read (Retrieve) SELECT GET Update (Modify) UPDATE PUT / PATCH Delete (Destroy) DELETE DELETE

Slide 6

Slide 6 text

Resource POST / create GET / read PUT / update DELETE / delete /accounts Create a new account List accounts Bulk update accounts Delete all accounts /accounts/123 Error Show account 123 If exists update account 123 If not error Delete account 123 /customers Create a new customer List customers Bulk update customers Delete all customers /customers/456 Error Show customer 456 If exists update customer 456 If not error Delete customer 456

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

 Solution: richer clients (using AngularJS , ReactJs, and others)  In browser databases available: ◦ derby.js, Lawnchair, Sench touch,

Slide 9

Slide 9 text

The Ultimate Solution will be Real-time data synchronization

Slide 10

Slide 10 text

 Failures can happen on: client push, or client pull/ server push  Communicate or hide connectivity state ◦ Chat app  Enable client-side creation and editing features ◦ Todo app  Disable, modify, or hide features that won’t work ◦ Facebook status, Twitter Tweets  Notify user about possibly conflicting data (Not recommended)

Slide 11

Slide 11 text

 “You are offline” ◦ “Unable to connect to the Internet” ◦ We need to stop treating offline as an error condition  Try not to block features completely ◦ If you can’t update, show old data (with message) ◦ Let user create data locally to be sent later  Dealing with new incoming data. Options: ◦ Show it as the most recent ◦ Show it in chronological order

Slide 12

Slide 12 text

 Proprietary solution? ◦ Firebase  Firebase transparently reconnects to server  Open source local storage databases that sync ◦ Hoodie (Another JS db that syncs. In preview mode) ◦ remotestorage.io (IETF Proposed Standard) ◦ PouchDB (JavaScript database that syncs!)

Slide 13

Slide 13 text

 Pros ◦ AngularJS library (AngularFire) ◦ 3-way binding with $bind ◦ Free Developer (Hacker) plan ◦ Paid solution with premium support ◦ Hosted solution ◦ Highly scalable ◦ Can deploy static hosted apps  Cons ◦ Proprietary solution ◦ Hosted solution (can’t run local or on own servers)

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

 Pros: ◦ Open Source ◦ Lightweight Cross Browser JavaScript implementation ◦ Syncs with open source CouchDB protocol servers  PouchDB-Server - a HTTP on top of PouchDB  Cloudant - A cluster aware fork of CouchDB  Couchbase Sync Gateway  Cons: ◦ I’m biased

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

Sample Code https://github.com/austyns/todo-pouch-couch

Slide 18

Slide 18 text

Thank You http://projaro.com