Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building real time data heavy interfaces for SaaS

Building real time data heavy interfaces for SaaS

SaaS products are fundamentally different from mass consumer products when it comes to performance. Because the content is tailored to the user and changes rapidly, most of our textbook strategies don't help.
But, the web is for everyone 🙂 Come, find out the platform features you can leverage to build great UX for your SaaS users.

Siddharth Kshetrapal

October 07, 2017
Tweet

More Decks by Siddharth Kshetrapal

Other Decks in Technology

Transcript

  1. const server = require('http').createServer().listen(3000) const io = require('socket.io')(server) io.on('connection', socket

    => { socket.on('appointment', data => { socket.broadcast.emit('appointment', data) }) })
  2. const server = require('http').createServer().listen(3000) const io = require('socket.io')(server) io.on('connection', socket

    => { socket.on('appointment', data => { socket.broadcast.emit('appointment', data) }) })
  3. const server = require('http').createServer().listen(3000) const io = require('socket.io')(server) io.on('connection', socket

    => { socket.on('appointment', data => { socket.broadcast.emit('appointment', data) }) })
  4. const server = require('http').createServer().listen(3000) const io = require('socket.io')(server) io.on('connection', socket

    => { socket.on('appointment', data => { socket.broadcast.emit('appointment', data) }) })
  5. const server = require('http').createServer().listen(3000) const io = require('socket.io')(server) io.on('connection', socket

    => { socket.on('appointment', data => { socket.broadcast.emit('appointment', data) }) })
  6. const IDBStore = require('idb-wrapper') const apptStore = new IDBStore({ dbVersion:

    1, storeName: 'appointments', keyPath: 'id', autoIncrement: true })
  7. const IDBStore = require('idb-wrapper') const apptStore = new IDBStore({ dbVersion:

    1, storeName: 'appointments', keyPath: 'id', autoIncrement: true })
  8. apptStore.put({ id: 1, patient_name: 'Siddharth', doctor_id: 2, start_time: '2017-10-07 10:00:00',

    end_time: '2017-10-07 10:30:00' }, callback, errorCallback) apptStore.batch(arrayOfAppointments, callback, errorCB)
  9. apptStore.put({ id: 1, patient_name: 'Siddharth', doctor_id: 2, start_time: '2017-10-07 10:00:00',

    end_time: '2017-10-07 10:30:00' }, callback, errorCallback) apptStore.batch(arrayOfAppointments, callback, errorCB)
  10. apptStore.put({ id: 1, patient_name: 'Siddharth', doctor_id: 2, start_time: '2017-10-07 10:00:00',

    end_time: '2017-10-07 10:30:00' }, callback, errorCallback) apptStore.batch(arrayOfAppointments, callback, errorCB)
  11. // sync.js self.onMessage(message => if (message.trigger === 'start_sync') { //

    fetch data from api // batch update indexedDB } })
  12. // sync.js self.onMessage(message => if (message.trigger === 'start_sync') { //

    fetch data from api // batch update indexedDB } })
  13. // sync.js self.onMessage(message => if (message.trigger === 'start_sync') { //

    fetch data from api // batch update indexedDB } })