The home page and login screen.
The website is designed to be used from a mobile device, and looks pretty good on any device!
Setting an alarm is super-easy. It's as easy as entering the time!
Setting an alarm is even easier from the native input interfaces on mobile devices!
Alarms can be set by sending text messages too!
No alarm clock has ever successfully woken me up. I usually hit "snooze" or turn the alarm off while I'm still half-asleep. I eventually drift back to sleep and nothing can stop me! Many college students (and other people) find it hard to wake up with their wake-up alarms. Most people that I have talked to are able to recognize when their alarm clock goes off, but most find it hard to get out of bed.
I realized that the problem was that we've grown used to alarm clocks. We have learned to subconsciously push it out of slumber's way. This is why alarm clocks need a radical change in functionality.
What it does
WakeMeUp! is built to make an alarm clock a lot less conventional and reasonably more arduous to disable. This web-based application repeatedly makes calls to your mobile phones in order to wake you up. The only way to stop the jarring and irritating noise of these incoming calls is to accept the call, comprehend the message and respond with a text message. These actions require concentration and the use of physical and mental faculties, further awakening a user. The user is now thrust out of slumber, and is more likely to wake up successfully. Apart from the web-interface, users can also send text messages to WakeMeUp to set and unset alarms.
How I built it
I implemented all calling and messaging features in the application using the Twilio API. I hosted all application files on a virtual private server and implemented the back-end using PHP and SQL scripts coupled with a MySQL database to store data. I used a cron job to periodically run a script to initiate calls to users with alarms set. I created the front-end of the website using the Materialize framework. Some functionality required the use of the JQeury library.
Challenges I ran into
I had never used an API before, and learning how it worked through experimentation took some time. The web application accepts a single alarm time for each user. I ran into trouble while trying to convert them into dates in order to check if an alarm had to be set off. One potential solution to my problem would not work for alarm times that had to be set off after midnight. Finally, I restructured the MySQL table to enable it to take other qualifying parameters. This required the modification of most of the scripts in the application, thus requiring further detailed testing. Also, since I worked on this project individually, I lacked the advantages of working with a team. There were times I felt overwhelmed by seemingly-random bugs while coding, and I missed a few pairs of eyes to help me review the code. WakeMeUp! has a lot of scope for expansion of features and user experience, and I was unable to tap into this due to limited time and resources.
Accomplishments that I'm proud of
I'm excited to have developed this radical new form of alarm clocks. I'm especially excited because I actually built an alarm clock that I know will work for me, as well as for many others that I know! I also successfully learned to use and implement an API in a project.
What I learned
- The importance of working in a team — I doubt I will ever come to a hackathon without a team again!
- The power of abstraction in APIs, and how they enable us to "stand upon the shoulders of giants" and create amazing new applications.
What's next for WakeMeUp!
- Ability to set alarms by sending a text message
- Ability to set alarm clocks based on the user's time zone
- Ability to customize the kind of wake-up-challenge. (Numbers, simple math questions, simple trivia, etc.)
- Ability to personalize and randomize the wake-up greeting to make it more memorable (and thus something to look forward to in the mornings!)
- International calling capabilities
- A more enticing and functional user interface
- And lots more!