Inspiration

At first, we were thinking about making a website that tackled either a world issue or health but decided to create something more interactive than that. So we ended up creating a website that could cheer people up and make them feel happier afterwards.

What it does

This website allows you to press a button and play either an image, video, or song depending on the option you select. The options are I want to be entertained, I want to be motivated, and I want to be relaxed. Entertained will play a video, Motivated will show a motivational quote, and Relaxed will play an Mp3 of calming sounds and switch songs with a click of the button ("Hey, Can I get another one?"). You can also leave a motivational message for other people that visit the site, and view some of the messages other people sent you.

How we built it

We built the website using Flask, HTML 5, Javascript, and CSS3. The website is hosted on an Amazon Web Services EC2 instance running a Debian based server. We used Jenkins for continuous integration and to keep the website up to date, and used AWS DynamoDB for the database to store and get the messages.

Challenges we ran into

Some of the challenges that we ran into were the buttons, audio, and pushing changes from GitHub onto the website. There were also issues with getting Flask to communicate properly with the frontend as we had to use HTTP requests to get and receive data from Flask, which took a lot of trial and error to get working correctly. Another issue that we faced was with the button and the button disappearing along with the button giving an undefined result. Jenkins and AWS were difficult to set up at first, and especially DynamoDB as we hadn't worked with databases up until now. Jenkins in particular was quite annoying to configure the permissions and webhooks required to link it with the Github repository and update and restart the server once a commit is made.

Accomplishments that we're proud of

  • Being able to use a database (SQL)
  • Streamlined build and deploy system with continuous integration
  • Scalability and reliability with remote databases.
  • Written 100% from scratch during the hackathon, without any templates or guides
  • Able to generate content from an easy to manage list

What we learned

  • Learned how to use Flask for backend management
  • Learned how to use DynamoDB for professional data management and storage
  • Learned how to use Jenkins and AWS for remote build, testing, and deployment
  • Learned how to manage HTTP requests on a server and send them from the front end

What's next for Button of Happiness

  • More videos that added onto the selection.
  • Being able to send gifs to others.
  • More quotes and images.
  • A more aesthetic format for the images and better quotes.
  • Allow users to create an account so they can favorite or star their favorite activities generated by the button
  • Allow users to customize the color scheme to maximize relaxation or comfort
  • Provide a rating system for each activity the button generates (lets devs know which activities worked and which didn’t)
  • Create a page where users can submit requests on what kind of activities the button generates
  • Update and improve the favicon.
Share this project:

Updates