Skip to content

Shows the user happy hours based on the users current location.

Notifications You must be signed in to change notification settings

ctaylor4874/happyfinder

Repository files navigation

HappyFinder

HappyFinder is a responsive web application that finds happy hours near the user-provided location and displays each happy hour on a map for the user to browse and interact with.

Additionally, there is a separate portion of the application that you can view here. This portion of the application is dedicated to getting data from different sources as well as parsing, cleaning, and storing the data.

HappyFinder makes extensive use of Foursquare and Google API's. The application was built using JavaScript, React, Node.js, Express, Python, and MySQL.

Table of Contents

Data Management

The data parsing and management is done with multiple Python 3 scripts that receive and send messages to separate Amazon SQS Queues. Data is from Foursquare API, as well as Google API. See the scripts that manage these tasks here: Data Project Repository

SQS

The reason I use multiple Python scripts and multiple SQS Queues is so I can have numerous instances of the same script running on the server. This cuts down the time it takes to handle the data exponentially. For instance, calculating all of the coordinates for the Google Radar Search takes far less time than handling the data that is received from Foursquare Menu Details. In this case, for every one coordinates calculating script that I run, I need to run two Foursquare parsing scripts.

React and Redux

I am using React and Redux for the front end. All forms are done with redux-form and the design scheme is done with Material UI. This combination allows me to reuse components multiple times in different parts of the application. It also allows me to add new content rapidly. Using Redux's application state I can query the server and when a response has come in, the data is stored in the application state. The screen will automatically reload when the state is updated, so when I send out the request, I just wait until it comes back, then state is updated, and the screen reloads with all the content.

Node and Express

Node and Express make for a very versatile backend. For all email I use nodemailer. This allows me to securely send emails to one of my email addresses, without ever exposing the address to the public. In addition to nodemailer, I am also using MySQL for Node. This library has everything that this application needs, including connection pooling and escaping values to protect against SQL Injection. The server is quite simple, the reason for this is the React/Redux frontend, and the data management/aggregation has been optimized to allow very little work on the server side when a client is using the application. This makes the application very fast and responsive.

Libraries and Frameworks

About

Shows the user happy hours based on the users current location.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages