We wanted to increase the efficiency for queues during events by eliminating the need for 3rd party apps to connect clients and hosts. Instead of relying on a third party application, an email invite or attachment, you are instantly given an invitation code once you are at the event.
What it does
Guests are provided with a QR code at the vicinity of the event. By scanning probe requests, we can visualize the number of devices in the event's proximity, and send out QR codes to verify them. Once they have been "authenticated" we are able to communicate with them using Twilio's SMS platform and can then constantly provide guests with updates. This not only eliminates the hassle of the third party applications, but the necessity of signing into a social channel like Slack. Everyone authenticated receives SMS updates regarding the event such as and once they leave the vicinity of the event, their information is deleted since their unique MAC address is no longer within the vicinity of the event.
How I built it
In order to truly demonstrate the scalability, we intially focussed on build a solid back end. The back end was the bulk of this project, and once that was completed we expanded our idea. For the back end, we scanned probe requests for SSIDs and MAC addresses of the devices near our vicinity. We built this packet sniffing tool using Python and then used Twilio to assist with SMS communication.
Once we completed the back end, we expanded on our product by building a client and user side. We imagine this product to be heavily scalable on both the client and user side. For example, we constructed a simple website using React which allows clients, or "hosts" to post an event and a unique QR code is generated. This code can be enabled or disabled and event descriptions can be provided.
The user side is a mobile application which displays all events that have been uploaded onto our Firebase database via the client website. Once a user attends an event, they can use our mobile application as a centralized tool to recieve and scan QR codes to get admitted into events. The user application gives the option to either scan a physical QR code, or search for the event you're attending and scanning the unique QR code generated for you. Through that, you can then participate in the event and receive constant updates.
Challenges I ran into
In the beginning we ran into problems with sending HTTP requests while trying to monitor network traffic at the same time. This proved to be quite interesting as I discovered that University of Michigan wifi had limitations in both wifi adaptors on promiscuous mode(monitor mode). MWireless only allowed wifi adaptors not on monitor mode to use internet. Since Mhacks 11 wifi was a derivative of MWireless, this became an issue. Next we tried MGuest, which gave us access on monitor mode, however MGuest did not allow us to send out HTTP requests from our laptops. This again, was a road block. Both wireless networks were useless at this point, so our proposed solution was to use the our mobile hotspots to run the python scripts off of. As a result, we made some very interesting discoveries the about UMich wifi system.
Other challenges that we ran into were on DynamoDB in the backend. Sending text messages to retrieve data from the front and back caused somewhat significant latency. This two step process had to be wrapped around many callbacks/promises to ensure that the correct data got passed between Twilio and EC2. The problem was somewhat solved in the end by removing some bloated code, however this is still an area to improve in.
Accomplishments that I'm proud of
We're proud that we were able to implement the Wayfair and Twilio APIs into Pilot seamlessly. The iOS and webpage also came together really well.