Software & Services - GnUfTw/Love-Is-Everywhere GitHub Wiki
Programming Languages
This project utilized a the following programming languages:
- C++: used for interaction between Arduino & LCD display
- HTML: used for website layout
- PHP: used for website form processing & making location data available in JavaScript
- JavaScript: used for Google Maps
- CSS: used for website styling
- JSON: used for data persistence
Arduino IDE
The Arduino IDE can be downloaded from the Arduino website for the platform you desire. It allowed me to program the Arduino micro controller via USB from my development machine.
Website
The website layout is based off of a WC3 template found here. An offline version of their CSS can be downloaded from here, it should be noted that I am using version 3. I am using an offline version to make the website more robust.
Users who find the project box will be instructed to go to the project website www.loveiseverywhere.info where they can see a Google Map showing where the project has visited. They can also enter the location that they found it in a form near the bottom of the page. Also, users can enter a message that will be sent to my email account.
Google Maps API
The Google Maps API was used to provide a visual representation of the places that the project has visited. Locations are parsed from a JSON file, geocoded to get latitudal and longitudal coordinates, and then markers are dropped on the websites map at each coordinate pair.
Amazon EC2
The website for the project was originally hosted through the University of Minnesota. Since I graduated during the development of this project, I had to move its hosting to somewhere else. I was interested in learning how to use AWS. I originally considered using S3 but quickly discovered it was only for hosting static websites and this is not a static website. I next considered using AWS Elastic Beanstalk for this but I was having trouble getting it to work with my website source.
I wanted more control over the server environment so I configured a 64-bit Amazon Linux EC2 instance using this guide from Amazon. EC2 is the perfect choice for this project because everything I need falls in the free tier. Not to mention, in the future I would like to implement a database to store entered location information instead of using a JSON file, and this would be fairly straightforward to do with EC2. You can find the commands to make a duplicate EC2 instance on my EC2 Configuration wiki page.
GoDaddy
The www.loveiseverywhere.info domain name is registered through GoDaddy. I originally had the domain set up to forward to the website hosted at the University of Minnesota. But, this was a quick and dirty way of doing things. Once I had it migrated to my EC2 instance, I needed to configure GoDaddy to redirect (different from forwarding) requests to my EC2 instance. To make this possible, I set up an Elastic IP address and associated it with my EC2 instance. I then logged into my GoDaddy account and using the Domain Manager, I edited the A type record so that the Host field was set to @ and the Points to field was set to the elastic IP address assigned to my EC2 instance. After making these changes and waiting a few minutes, my domain name was working correctly with my EC2 instance.