The main frontend
I was scrolling through Facebook (a while before PennApps!) and I saw a post by I believe Dave Fontenot that had the idea of an alarm that adjusts itself based on stuff like flight delays so I kept it in my head until my next hackathon which happened to be PennApps.
What it does
Links to your Gmail, Google Calendar, Facebook and more external services integrated with its API. Developers are able to link with it via the simple-to-use API.
How I built it
I started off with Node.js, the only real dev language, and moment.js. Then I added some classes and functions that modified an alarm object and made it check the alarm via a cron job. There are many integrations including Gmail, Google Calendar and Facebook. I had to authenticate a user through Google OAuth2 and the Facebook API and retrieve their events for that day and set an alarm based on the earliest one. This will come in handy for when you have an event scheduled for a weekend and you feel lazy and sleep in late. The smart alarm would get the event from your Facebook account and set it accordingly so you don't miss the event.
Challenges I ran into
Well, for one, my MacBook Air has 2 GB of RAM which made development extremely slow. Another one is the Twilio ntation. Since it requires a URL to a TwiML file, I had to find out a way to make the site available on the public internet instead of just locally through PennNet.
Accomplishments that I'm proud of
This is the most node modules I've ever written for a single project.
What I learned
Cron jobs are most of the time unreliable with 2 GB of RAM. I also finally figured out how to use Google APIs efficiently, stop memory leaks and how to be productive on a budget (which is important). Oh, also, the Facebook API is very complicated.
What's next for SmartAlarm
- Better UI
- Login system
- Persistent alarms
- Android app
- Host it somewhere