In approximately 2000 The City of Tucson's planning department realized that it needed to build a web application that allowed people to view the status of permits related to property construction permits, property permit modification, and property zoning permits. That applications is call Property Research Online (PRO) and the original version is still being used.
Since 2000, the City of Tucson has undergone many changes and the developers who originally constructed the application no longer work for the City of Tucson. I inherited the project in 2013 because there were many existing bugs in the application and there were no developers to fix those issues. The original application was developed using Java and Java Server Faces and the applications has been hosted via Apache Tomcat. The applications primary functions are based on three different search features:
- Single Address Search - The user enters a valid single street address and the application finds and displays all permits for the address.
- Address Range Search - The user enters a valid address range. The application presents a list of valid street addresses within the address range and lets the user select a single address in order to view the address's permits.
- Parcel Search - The user enters a property's parcel number and the application finds and displays all permits for the parcel.
- Permit Search - The user enters a known permit number and the application displays the permit's details.
PRO has some interesting complex issues. It relies on three significant data sources. The most important data source is the City of Tucson's permitting database, which is the back-end database to a vendor supplied permitting system. The second most important data source is data and/or documents from the City's document management system. PRO interacts with the back-end database to the vendor supplied document management system. The last significant data source is the City's address database, which is a geospatial database provided to the City of Tucson by Pima County.
When I took over the project I found that the Java-based application had many memory leaks and even moderate use of the application caused the site to need to be restarted on a daily basis. Many of these memory leaks were fixed by adding code that makes sure JDBC connections are closed once the application has completed running a query. I was also allowed to start rebuilding/refactoring the application so it would be easier to maintain and fix as well as easier to add new features.
The first first phase in rebuilding process was to turn the application's data needs into REST based web services by developing the City of Tucson's web API. One reason I chose this method was because PRO is primarily a read-only application, but most importantly building services like the one's for the city's web API allow those services to be re-used by as many applications as possible. Because the application had to be run a specific Unix server I used the Java-based Spring Boot framework. The three primary reasons for choosing the Spring Boot framework were ease of configuration, well-defined and easy to implement REST based controller development, and the general belief that a Java based application can have the "write once, run anywhere" capacity.
The second phase in rebuilding PRO was to re-implement the applications front-end or user interface. I constructed a prototype of the application using the Python based Django framework. Django follows the model-view-controller design pattern which helps maximize separation of concerns for the applications internal components. Also, Python and Django greatly increase development speed and Django is robust enough that the prototype could be declared as the final production-ready version and the application would be scalable if we ever had to deal with usage demand issues.
One of the last things that I have been working on as an enhancement to the application is a map-based search tool. This tool, which exists, allows the user to zoom into a city parcel, select the parcel and the application calls GIS web services to find the parcel's address and permit information.
I am currently interacting with City of Tucson employees who will be using the application to find bugs and enhancements. The new version of the application is expected to go-live in late August 2015.
- Java - Spring Boot
- Python - Django
- Git and GitHub