Skip to content

A Progressive Web App for paperless booth visit provisioning

License

Notifications You must be signed in to change notification settings

bulldogearthday/booths

Repository files navigation

Booths

A Progressive Web App for paperless booth visit provisioning. Deployed to https://earthday.firebaseapp.com

Usage

  • Define booth list on the firebase backend, and also provide the same data in the off-line default store (jsonp file)
  • Generate RSA public/private keypair at http://www-cs-students.stanford.edu/~tjw/jsbn/rsa2.html
  • RSA library is extended with sign/decodeSign capability to accomodate our use-case
  • Encode booth key for each booth and generate QR codes for them
  • Distribute the QR codes (generated by http://goqr.me/, listed on https:/bulldogearthday/boothQRs
  • Make sure the visitors only see the booth's QR code when they completed the booth's quest
  • The visitor can then scan the QR code, unlocking the achievement

App basics

  • Progressive Web Apps provide a way to have mobile app on multiple platforms without going through the hoops of releasing separate native apps into native app stores
  • Progressive Web Apps work best with Chrome browser but with polyfill libraries other browsers could still provide the required features
  • The user can take a picture of the specific QR code of a booth. The QR code will cryptographically prove that the individual visited the booth
  • Using getUserMedia for visual capture (see e.g. https:/samdutton/simpl/tree/gh-pages/getusermedia)
  • Using MediaStreamTrack for video source selection (https:/samdutton/simpl/tree/gh-pages/getusermedia/sources)
  • Using jsQR for QR scanning (https:/cozmo/jsQR)
  • Using Lazar Laszlo's https:/LazarSoft/jsqrcode
  • Using http://www-cs-students.stanford.edu/~tjw/jsbn/ for RSA encryption/decription
  • The App should be able to operate off-line from cached data
  • Firebase backend provides booth data
  • The data is basically the list and properties of the booths

TODO

  • Fallback for browser which doesn't support getUserMedia
  • Computation server side for better security
  • Minimize JS and even code to make cheating harder
  • Minimize all assets (smaller icon data, minimize CSS too) for decrease load time and better bandwidth
  • Inline everything together for faster experience
  • QR code would read automatically and no SCAN button needed
  • Improve cross-platform and cross-browser coverage - improved, but there's always more space for improvement

About

A Progressive Web App for paperless booth visit provisioning

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published