This code allows you to create a Reveal.js presentation, controlled by hand motions through a LeapMotion device. Using SendGrid, you can conduct a live voting session where votes are cast via email and updated in real-time using express, socket.io and Highcharts.js. If you have Google Glass, you can get a teleprompter that displays your slide notes as you go through each slide.
View a video demo of the final product to get a feel for the completed project. The video is less than 5 minutes.
There is a companion blog post at SendGrid's blog.
- LeapMotion hardware - if you want to control your slides using hand motions
- SendGrid account - to receive live interactive votes via email
- Google Glass - if you want the teleprompter feature
This software was tested on a Macbook Pro Retina and a Macbook Air, both running Yosemite. If you test on Linux or Windows, please let me know the results.
- clone this repository
- create a local MySQL database, the schema is at DB/votes.sql
- rename .EXAMPLE.env to .env and update the credentials
- run
npm install
in the root directory of the project - run
grunt
- run
ngrok 3000
- setup your Incoming Parse API webhook in your SendGrid account
- setup your hostname and MX records per these instructions
- e.g.
- my hostname is elmer.bymail.in
- my URL is https://38b1f7bz.ngrok.com/inbound
- for more help on setup, check the docs or reach out to me.
- go to http://localhost:3000 and try using the leapmotion to navigate to the next page (voting)
- currently, you can swipe backwards/forwards/up/down and point for a simulated laser pointer.
- send an email to inbound@the-host-you-setup-for-the-parse-webhook (e.g. mine would be inbound@elmer.bymail.in) with Python as the subject, the vote should register automatically in a few seconds
- check your email inbox for an email from community@sendgrid.com. Say hi :)
- check your DB and verify the new entry
- modify the slides at views/index.html and keep your assets in the /public folder
- if you have Google Glass, setup an App utilizing the Mirror API on App Engine and update the credentials in your .env file
Please let me know how I can improve this tutorial with a pull request or open an issue. Happy Hacking!