We recently entered the Android Marketplace with an app for Pantech USA that would accentuate their role as the official handset sponsor of the 2011 Dew Tour and primary sponsor of the first leg of the tour in Ocean City, MD. The Official Dew Tour App is the essential guide to the Pantech Open and the other three tour stops across the country and features videos, news, results, athlete bios and more.
The app contains a multitude of data, which we broke into buckets representing the frequency with which it updates:
- Static: Content which doesn’t update very frequently, or at all.
- Media: News, Videos, Image galleries. This content would be updated frequently, probably a few times a day during the events.
- Results/Rankings: This content would be updated several times during each sporting event, and would represent up-to-the-minute rankings across all sports for each competitor.
The inherit problem with an app that contains so much data and content is how to keep it updated. We wanted to have the ability to make changes on the fly, and be able to maintain fresh content without having to push updates to the app through the marketplace. We quickly decided on using Expression Engine, due, in large part, to its flexibility and ability to output data in whatever format we needed, including XML.
The results and rankings for each competitor was a different beast entirely
Using EE (and the always incredible Pixel & Tonic add-ons, most notably Playa and Assets), we were able to build an easy to manage CMS that contained data as varied as athlete bios, image galleries, news, event schedules, city and guest information, videos, and banner ads. All of this data was combined into two XML files, one for the static content and one for the media.
The results and rankings for each competitor was a different beast entirely. With a number of unique results feeds per sporting event, with each one being updated at frequent intervals, we needed to devise a method by which we could maintain a to-the-minute feed without having the phone parse and process that amount of data. We ended up writing a PHP script that would be run every few minutes (via a cron job) which pulled all of the relevant feeds, parsed them, and stuffed them into the database. The processing of these feeds would consequently be done entirely on the server, leaving the phone to access a single XML file that was simply pulling from the database.
In the end, we created an easy to use, easy to maintain Content Management System for the Official Dew Tour Android App using Expression Engine. This solidifies my opinion that EE’s greatest strength lies in it’s flexibility and extensibility.