GroundWork group Event Management System

When I first began working at GroundWork group (GWg),a Columbus-based 501(c)3 nonprofit organization, much of the development was being done on a need by need basis. One of the main goals at GWg is to increase the positive impact nonprofits have in the community through better use of technology. What I began to notice was that many of the nonprofit organizations that GWg engaged with needed many of the same types of things. Many of the organization, for instance, held events to help funding their missions. An issue at GWg was that each time a new event project came in, there was either a new development effort, or effort to modify an existing project programmatically to fulfill the requested need. While this had worked up to this point, I felt that a better approach could be found.

In 2010 I began working on a series of projects that were intended to alleviate the need to recreate systems that could, with some effort, be made dynamic enough to fulfill the need of 80 to 90% of the client base at GWg. One of the first in this series of projects was a simple donation widget. I was able to design a Java based application that was database driven and could be “instanced” and assigned an id for a particular organization. Now instead of developing a new Java app or modifying existing code, we could just deploy a new instance of the app base and plug some values into a database table in order to associate it to the host organization.

After having completed the donation widget, I began working on a way for GWg to be able to create event registration sites in the same manner. I wanted to create a web based application that could be run as a single instance and handle multiple clients with multiple events. The first version that I rolled out was built using JSR-168 portlet specification and housed in Liferay. At the time GWg was in the process of adopting Liferay as a content management system. This approach worked well, but as the application grew, performance and extendability began to be an issues with limitation imposed in building this type of application as a portlet.

In 2011 I took lessons learned from working on the Buddy Walk project and the portlet application and began building a stand-alone Java web application leveraging Apache Struts 2 and Tiles 2. This approach worked very well in that freed me from the constraints imposed by Liferay and building the application as a portlet, and it allowed me to explore Struts and Tiles as a development framework combination. I found that while Struts 2 is a very good alternative to standard servlets in a Java MVC development apparoach, Tiles began to be a burden with regards to support and extension. In 2012, I removed Tiles 2 from the project, opting instead to use a combination of Struts 2, JavaServer Pages Standard Tag Library (JSTL), and JSP expression language (EL). This approach allowed me to remove the, at times, buggy integration of Struts and Tiles as well as improve the overall performance of the system.

I continue to build the event management system out by adding functionality and modifying the user interfaces to create a more user friendly experience. Overall the system has been successful and GWg has been able to host many events and facilitate over 10,000 online registrations over the last 3 years.

The hosts page for the GroundWork group Event Management System can be seen here.