A simple video of my project working. I have a few more modifications to do, but I am only able to upload my video on the NYU campus (Internet is kind of slow) so I'll upload this video now, and then upload a few pictures of a few UI changes I do later.
Documentation a little better:
Project is called District. You go into a particular district and you're able to see places to eat within that district, which are the best or the closest. It is a way to explore a particular district without actually having to pull out your phone, and planning your time in that district easily. If you're a tourist it will give you a simple way to understand where you are and be able to make plans accordingly.
This will basically help you plan your time within this area of the city, and help you explore it in more depth. I have only accomplished the food section because this was a really hard problem to solve for me, and I think I have done well with it. The problem with Food and restaurants is that there aren't many APIs that you can call or use to be able to get details about restaurants and query them easily. So I had to implement my own scrapers and scrape from websites like Open Table, Seamless, Delivery.com, Grubhub, etc. This was a complex problem as I had to write algorithms to get then parse data within these sites, and then serve it for the user to use very fast.
My UI is basically a kind of a joystick with a Magnetic Stripe reader (For now it's a RFID because I only had that). The user will swipe their Metro Card or RFID card and then gain access to their profile (it will remember you based on that number). This is already implemented for the RFID but I wasn't able to secure a Magnetic Stripe reader. Then you are able to browse and book restaurants within that area. In the future you can also book activities in the area with your card, but I haven't gotten to that point yet (wasn't my plan to do so, but something I want to do in the future).
I also used sockets so we can use a single server with multiple Arduinos, and this reduces the access on the API and therefore we need to scrape less things, and the data is also stored centrally.
For the implementation I used NodeJS as that works amazingly with Arduino, and goes well with any input/output intensive system like this one. Database was MongoDB, and for the web I used AngularJS to serve the content to the user. In the future I could simply just use something like an LCD to display a website, but I don't think it's a pressing issue for me now.
The overall process is:
Arduino RFID/Button Press -> Streamed to the Website in some action -> Queries cache or API -> response given or performed










