Meteor, Cordova, and Famo.us: The Chill Way to Build Apps
This is a guest post from Adam Elkassas, one of the co-founders of social mobile app Down to Chill.
I’m a twenty-year old programmer and entrepreneur and here’s the story of how I started the social networking company Down to Chill.
The Beginning of our Meteor Journey
I attended University of Pennsylvania’s Jerome Fisher Program, where I studied Computer Engineering, Finance, and Statistics before taking a leave of absence after my sophomore year.
A year and half ago, I started learning Meteor after trying to find a way to make my college note sharing website Noteriety able to process real time transactions.
We built Noteriety completely in Meteor, […] acquiring over 5000 users
After frustration with the Ruby on Rails framework in the summer of 2013, my good friend Arjun Jain and I decided to learn Meteor and stumbled upon Discover Meteor. We were immediately intrigued by the power of Meteor coupled with the ease of learning that Sacha and Tom’s book provided.
In fact, we ended up taking a Friday night reading the whole book instead of being social 19-year-olds. We built Noteriety completely in Meteor, and for the next year we hacked on it out of our dorm room, expanding to schools in the Philly area and acquiring over 5000 users.
By the end of our sophomore year at Penn, we had plans of national expansion, so we both decided to take a leave of absence from school.
Halfway through the summer, I came up with an idea for a “Tinder for friends” app called Down to Chill, while hanging out with Arjun and two other friends, Michael Powell and Matt Wojo.
Down to Chill would allow users to set their free time, then swipe through and match with friends that are also free and looking to “chill.” After matching, users would message through the app to plan their get-together.
We had all experienced frustration with our experiences with Tinder because of the awkward dating connotations that came with matching random people we had never met.
In addition, we felt that there was a serious gap in the market around free time. We were on campus in the summer and always found ourselves with nothing to do except hang out with each other, even though we all had thousands of so-called “friends” on facebook.
We felt that there was a serious gap in the market around free time
We loved Tinder’s easy UI of providing a simple yes or no by swiping, so we thought this model could apply very well to one’s Facebook network. Facebook’s API gave us the data equivalent of every person giving us a complete list of people they know or associate with, and we could leverage this data to help people filter through their friends that mutually want to hang out in real time.
So Down to Chill would aim to “turn your social network into your social life” by getting people off of their computers and bringing them together.
That night, Arjun and I made the spontaneous decision to put Noteriety on hold to work on Down to Chill with Matt and Michael because of its potential viral nature.
We had created the ultimate team to build Down to Chill
Matt was a Networks and Social Systems major in SEAS with a background in data analytics, and Michael had years of startup marketing experience in addition to being a Wharton business student.
Combining Arjun and my technical experience with Matt and Michael’s unique skillset, we had created the ultimate team to build Down to Chill from the ground up and disrupt the social networking app market as we knew it.
The Tech Stack
At this point, we had to decide how to actually build the app. We had extensive experience with Meteor through building and managing the Noteriety website, so we were naturally drawn to Meteor as our backend framework.
The last piece of the development puzzle, Cordova, was an open-source project that would let us communicate with native hardware functions on Android and iOS.
After extensive research, we realized that this unique combination of Meteor, Famo.us, and Cordova would give us the ability to create an app that had real-time data capabilities, while being cross-platform and native-feeling. Meteor also would help us push real time updates and fixes to our app without having to submit a new binary update through app stores.
The next challenge was figuring out how to get these three very different frameworks to play together in a way that would both allow us to build a scalable viral app, as well as get approved through Apple and Google’s stringent application review process.
We used the Famono Meteor package to access the Famo.us framework, but the problem was that there was no stable package integrating the Meteor templating system reactively with Famo.us surfaces.
Collection.observe() functions to reactively monitor adding, changing, removing, and moving data sent from the server, leaving our HTML files completely empty other than Template definitions.
We used the
cordova-loader package (note: now deprecated in favor of Meteor’s official solution) written by Andrew Reedy to successfully integrate Cordova plugins within our app.
Altogether, we spent six weeks developing the app
The plugins that we used helped us tackle native functionality issues related to Facebook OmniAuth, native keyboard handling, geolocation tokens, push notification integration with Amazon SNS, and handling when users lose connection to our Meteor server.
Altogether, we spent six weeks developing the app from the formation of our idea to submission to the respective app stores.
We were initially worried about performance, given that we had a O(n2) machine learning backend algorithm that takes into account many factors such as distance, swiping habits, common hashtags, time overlap, and more in order to optimize every person’s stack of friends to their specific preferences.
Our tech stack is holding up on iOS just as well as most other apps on our phones
After a week of being released and an average of over 600 daily active users, we can say that our tech stack is holding up on iOS just as well as (or in many cases even better than) most other apps on our phones.
The beauty of Meteor ensures user data is all processed in real time with very little latency and without reloading the app browser.
The average loading time of our user stack is even less than Tinder’s despite our complex backend sorting algorithm. The app has a slight UI graphics lag on Android, but this is due to fallbacks of Cordova’s compatibility with Android’s native browser.
We look forward to future wrappers to improve upon this compatibility issue. Debugging the app after beta launch was a breeze, as we were able to push updates to instances around the world in less than 2 minutes from our computers.
Looking back on the development process, we have no regrets on the tech stack we decided upon, despite a few struggles along the way. Our company is the first application on the Apple App Store and Google Play Store using the unique combination of Meteor, Famo.us, and Cordova.
We have no regrets on the tech stack we decided upon, despite a few struggles along the ways
Down to Chill is a production-ready, real-time, and cross-platform mobile application built in only six weeks and available across the globe.
Application development is moving in a positive direction towards a Utopia where the average developer could potentially have the tools to create high-quality and scalable apps with one code base. The days of natively developing apps in Java and Objective-C have an apparent end in sight.
And it’s important to keep in mind that we built this app using frameworks that have not even reached version 1.0. With that being said, I look forward to seeing the optimizations Meteor 1.0 has in store and how it integrates both Famo.us and Cordova.
Down to Chill is available on the Apple App Store and Google Play Store. You can also check out this funny Youtube video we made to describe the concept of the app:
As for parting words, I must ask the Meteor community: “Are you down to chill?”