Kalamango started as an idea by German Gomez. Gomez frequently runs and wanted a platform agnostic way to compare his calorie burning with his friends who often used different apps, did different sports, and had different wearable hardware.
What it does
Kalamango is a fitness-centric social media web app that allows different wearable hardware, apps, and mobile OS' to report back their data via a web interface. It incorporates features such as federated logins via OAuth, Friends Lists, and Achievements.
How we built it
First we did research on the APIs we wanted to incorporate into our project. This led us to two of the most popular fitness apps currently on the market, Strava and Mapmyrun. Strava and Runkeeper both had APIs that would allow us to easily pull data for our users and would help us compare their caloric expenditure with one another. We then purchased our domain with the super convenient domain.com coupon that MLH provided for us. Then we transferred it to a DigitalOcean nameserver so that when we were ready for it, it would be ready for us. We then grabbed three raspberry pi's and began to set each up to help us deploy our environment. Two would be set up as LAMP stack web servers, and the last one would be our load balancer / mysql instance. To do this, we had to install Raspbian along with Apache, and PHP on two of the Pi's and haproxy and mysql With all three set up, we pointed our domain at the load balancer Pi's IP and began testing basic functionality to ensure that things were properly split up. Once that was done we began working on the landing page with bootstrap. We wanted something simple, clean, and effective, and figured a template would be the easiest way to get something up and running quickly. We modified it for our purposes, removing a lot of unnecessary fluff and minimizing it into a concise landing page that would quickly inform the user about who we are, why we are making this app, and how they can access it. Once that was out of the way, we set up OAuth so that we could avoid having users make their own accounts and to increase accessibility of the site. The next thing we had to do was actually start coding the main web app itself. We decided on a simple one-page layout with a tabbed interface. We used jQuery to manage switching between the different tabs and we pulled data from the APIs using PHP. We set up our mysql database with the necessary tables, UserInfo, Friends, FriendRequests, AchievementInfo, UserSportData, and UserWebHooks so that we could set up all of the features we wanted. Then we implemented those features using HTML and PHP.
Challenges we ran into
- The Lizard Man
- mysql triggers for achievements
- PHP vs React
- Constant distractions from the Lizard Man
- Friend requests
- Morale loss after cup stacking failures
- OAuth going down when we botched some random PHP.
Accomplishments that I'm proud of
Getting so many moving parts working together in tandem was a rewarding experience, especially because so many of them were handled by different team members working autonomously for the greater good of the team.
What we learned
Anica - "You don't always need Bootstrap to make stuff look pretty." Aaron - "Oauth is cool" Gomez - "The lizard man is real."
What's next for Kalamango
Corporate buyout, obv. Maybe a partnership with Nike.