Over the last months I have been working on a personal project of a cause that I care about. Helping more dogs and cats and other pets to get adopted and not fall through the cracks and be destroyed due to overcrowding in local shelters. Petfinder is an organization that a lot of smaller shelters work with and provides an xml api to their data that other developers can use. I have three sites which are based on the same source code and same data, one nyc-adopt-a-pet.com which has all the information, nyc-adopt-a-cat.com which has a filtered data set which is for shelters that have cats or specialize in cats and nyc-adopt-a-dog.com which has the same for dogs.
The sites are built using the CodeIgniter php application framework, which has worked resonably well. I use Zend Framework a lot at work, and I might have chosen Zend if I started today, but for a site of the scale I am working on CodeIgniter works well. CodeIgniter is efficient in design and coding, but has a bit of ugliness underneath the core. I built classes which can make requests to petfinder’s api. For the content that is more constant, I built utilities to pull using the xml api (using the classes) the shelters that I was interested in (I chose the tri-state area). Then the imports were converted using another script into insert and update statements.
For more dynamic content I use direct access to the petfinder api, for instance for a random pet feature they have. Initially the features I didn’t want to build I linked out to petfinder’s site. Later I have built out more. I have also integrated twitter, facebook, the openx adserver, and joomla to help with more content which would involve less building of code. Side bars content is built using jquery using an ajax implementation, allowing the sidebar content to be integrated dynamically, which can come from either random pet pictures, petfinder’s random pet feed or the adserver. To improve the design, I have integrated Webfonts into the site using adobe’s api.
I have wanted to build a state of the art mobile site for this as well. Unfortunately petfinder’s mobile presence is very inconsistent with petfinder’s web presence in terms of url structure and how it can be integrated, so I knew I would have to build all the features that I wanted to present. I have worked with jquery over the years and like a lot of things that this framework can do. I have seen people build mobile functionality with it, but until the jquery mobile came out it seemed much more work. I have been working using jquery mobile which works resonably well. It has some deficiencies, for instance css fixed positioning doesn’t work as well on android 2.3 and earlier, the transitions can be a little jumpy, but in general it works.