We're rapidly approaching a point in time where mobile users expect an app for all of their activities. Think about it: what social event or activity wouldn't be improved if you had a map/list of options/access to other attendees at the tip of your finger? Paper maps can be outdated (what if everyone's favorite rollercoaster at the amusement park is down?) and schedules often change day-to-day.
Jan Jirout of C Monster Solutions recognized the need for just such an app for cruise ships after his own family experiences. This led to an app called Ship Mate for both Android and iOS, and the creation of the official app for the cruise3sixty cruise conference to aid attendees at the event. Jan walks us through the development of the two apps and his experience with Parse so far.
Tell us about your company and the role you play.
The company is C Monster Solutions and consists of myself and my brother, Mike. I'm the developer and I guess the CEO. We have a great guy who's been helping us with web the past few months currently on a part time basis, Charles Reid. The company was created about a year and a half after I started the Ship Mate project for iOS.
Tell us about your two apps, Ship Mate and cruise3sixty.
Ship Mate is an app for anyone going on a cruise vacation. You are able to meet other people who you'll be cruising with, communicate with people who have cruised in the past, learn about the ship you will be on and the ports you will be visiting, along with other fun features including a countdown, cruise ship current location and an Instagram-like feature where you can share your vacation pics.
cruise3sixty is an app for the 2013 cruise3sixty cruise conference. The app provides the conference schedule, a directory of attending agents and exhibitors, ship info for the cruise ship tours, a city guide for Vancouver (where the conference will be held), and a place to chat with other travel agents who will be attending.
How did you come up with the inspiration for the two apps?
A few years ago I wanted to learn how to program for the iPhone so I bought my first Mac and an iPod and was in search of an idea to work on. Our family had been taking family reunion trips every other year on cruise ships (over 50 of us!) and we happened to have a trip coming up in a few months. I thought up the idea and got to work on a version for our upcoming cruise. I remember being excited getting a few downloads and some feedback. I realized this could be something people could get into and continued to build, learning a ton along the way.
cruise3sixty came from attending the conference two years in a row and being disappointed with the app that was being offered. My brother and I realized if we could build the official app for the year's largest cruise conference, it could help us make connections in the industry. We approached them and worked out an agreement.
How did you end up using Parse in Ship Mate and cruise3sixty?
For a while everything on Ship Mate was contained in the application bundle (one of the reasons the app was initially split into different versions for each cruise line). The reason for this was because I didn't have much experience communicating with a server (I'm still learning). We got a good guy to build us a custom solution to implement the server side for chat. This worked well for a while but we didn't have anyone to maintain this solution. I learned about one of Parse's competitors and thought maybe it could replace our current chat implementation. It didn't yet have the flexibility we required but made me realize that something that worked might exist out there. I looked around, kept an eye out, and found out about Parse (probably through a Hacker News post). After replacing our chat solution with a Parse solution, I started a focused push to put everything from the app into Parse.
How is Parse used in the apps?
Cloud Code is being used to send Push Notifications when messages are sent or new users join on cruises. It's also being used to construct queries and doing a bit of data processing to be used across platforms. Save hooks are used to massage data in some cases.
For Ship Mate, when the app is launched Parse is used to track the app being opened giving us an insight into usage data. We monitor usage data through Parse in other ways. When a user uses any of the features the content is coming from Parse, including text content, images, and ship locations. We have cron jobs running to scrape for ship locations and current web cam images. Web cam images are stored in Parse so we can display an animation to the user of the ship's last day or so of travel. Our User Gallery is an Instagram-like feature completely powered through Parse.
User account management is also done completely through Parse. User data is stored in Parse allowing the user to access their stored cruise itineraries on different devices and through the web site.
Parse Cloud is used for save hooks to keep data consistent across devices (ACL) and some query construction and data processing to make fetching data consistent and easier across devices and to send Push Notifications.
Push Notifications are used to let users know when they have new direct messages, they used to load new messages when a user is in a chat room, and they're used to let users know when someone new is joining them on their cruise.
Roles are used to give us more access within the app over common users.
Parse is used to monitor where data is deficient within the app. If a user goes somewhere where we're missing pictures or description or something we make a note of that through Parse.
We're also about to start using Parse for in-app purchase.
For cruise3sixty, Parse is used for user account management. We were given a list of attendees along with username and password. Using the Parse REST API I set up accounts for the travel agents ahead of time. Logging in is required to access some of the features. The conference schedule, exhibitors, and sponsors are stored in Parse.
All data for cruise3sixty is mirrored on the device so the app can be used without network access. The conference network access isn't reliable, but with Parse we can get the most recent data to the users while they have network access and have it stored for when the network isn't available.
What did you feel the greatest benefit was after moving everything over to Parse?
Flexibility was a huge initial benefit. I love how you can add fields to a Parse object and older versions of the app continue to work as implemented without issue. Remember, I'm still learning, so much of what I did initially needed to be changed as the app evolved and Parse allowed that while not affecting older versions of the app.
Another benefit is the ability to store all data in Parse instead of being on the app. Some of it is mirrored on the app and updated when changes are made, but most data does not need to be on the app, like for cruise itineraries. Right now we're storing 35k cruise itineraries that were previously included in the app bundle, but the user cares only about the itineraries they will be on.
User management and cross platform API's are also key, making it easy to share the data from the same source on different mobile devices and the web.
When developing cruise3sixty I was able to easily migrate static data from the Ship Mate app to the new cruise3sixty app using the Parse data export feature. For one piece of dynamic data, Ship's Current Location, I'm actually making a REST call from the cruise3sixty iPhone app to the Ship Mate Parse account. This should probably be avoided but it's handy in this case.
With so many people going on cruises each year, do you have any idea how many times your apps have been downloaded?
I wish I had better knowledge of this. I think we have over 200k downloads for the iPhone version, maybe about the same on Android. For a while the app was free, we didn't require user accounts for tracking cruises, and we had many different versions for the different cruise lines. I pay more attention to the rate of download vs the cumulative number. We've been consistently in the top 10 travel apps over the past two years, sometimes in the top 5, reaching as high as #2.
The cruise3sixty final version has just been released and hasn't been promoted yet. The conference organizers will soon start promoting the app to it's 1,200 agent attendees and the exhibitors.
Do you feel like you've saved time in development by using Parse?
Parse has decreased development time and cost. It's hard for me to judge by how much, but I can say things would be very different for us right now without Parse. I'm still the only iPhone developer for us and that couldn't be without Parse. Ship Mate has transformed from a cruise utility to a cruise community spread across iPhone, Android and the web and that would've taken many more resources without Parse. I don't know if we would've succeeded securing those resources to get us to this point.
cruise3sixty wouldn't exist without Parse. We would not be able to expend the resources to create that app without Parse in our current position.