Case Study: Zuluru

The Client

The Toronto Ultimate Club is a not-for-profit organization dedicated to the growth and advancement of the sport of Ultimate Frisbee in Toronto, Ontario. Since 2006, we have been maintaining their web site on a volunteer basis. The site has gone through several iterations in this time, constantly being upgraded and enhanced with new functionality to improve the experience for over 3000 members.

The Problem

As described elsewhere, an open-source package called Leaguerunner was used for handling online registration, scheduling, scoring, standings, etc. Leaguerunner was the best solution available in 2006, but in recent years new "rapid application development" (RAD) frameworks have made the job of crcoeating and updating web applications easier and faster than before. Leaguerunner is not based on one of these frameworks, so new features, bug fixes, and even relatively minor adjustments to the visuals are all more time-consuming. As a result, we felt that Leaguerunner was falling further and further behind the state-of-the-art, impeding adoption of new technologies like Ajax and integration with social media sites.

The Solution

With the support of the TUC management, we launched an ambitious project to completely replace Leaguerunner with a new version. CakePHP was selected as the framework to base this new version on. To minimize the impact on day-to-day activities of our players, captains and administrators, the Leaguerunner feature set was replicated. Similarly, much of the general layout, database structure and even algorithm implementation was retained.

However, under the hood, the new version is more than 99% new or modified code. Many parts of the implementation were made more modular, so that new options (e.g. adding different scheduling systems, using different online payment providers, integrating with different content management systems, etc.) can be added at any time without touching existing code, which greatly decreases the possibility of introducing bugs into functioning code. Configuration options were added to provide a fine level of control over which features are enabled. Score submission, which captains must do after every game, was simplified from a 5 page process to a single page, using JavaScript to dynamically show only the areas that apply.

The new version, called Zuluru, was initially launched in August, 2010. Since then, many major new features have been added, including player photo upload; individual preference settings (allowing the user to set, for example, whether game times are shown in 12 or 24 hour time); pop-ups providing quick access to details about players, teams, etc. without having to load a new page; simplified registration and roster management; attendance tracking; a context-sensitive help system; mailing lists and newsletters; playoff and tournament scheduling; stat tracking; franchises; affiliates; badges; and volunteer task scheduling. There have also been many smaller improvements to visuals, process streamlining and easier access to data. Some of these features had been on the Leaguerunner todo list for years, but had never been addressed because of the complexity of adding them to that system.

The power of the CakePHP framework showed itself when a stripped-down version of the site, providing access only to the Zuluru functionality and aimed at the mobile market, was completed with about an hour of work. CakePHP also supports "themes", which allow easy customization of any aspect of the look of the site; Zuluru makes novel use of this to simplify customization of the areas that most commonly need it. Other features of CakePHP will make it possible for Zuluru to be translated to other languages, run on a variety of databases, and more!

Future plans include an API that will enable interaction with other applications (e.g. Facebook, iPhone, etc.), support for more payment providers and content management systems, and many more features that will improve the lives of players, captains and administrators alike.

The Executive Summary

Trawna Publications has the experience to build highly complex applications. No job is too big!