Photo Nights Boston(PNB) is a non-profit organization whose goal is to make Boston an artists hub for photography. They wanted to make a site that was centered around photography. They partnered with ISM to create a design and they brought me in to bring it to life.
There was no shortage of technical challenges. The site was to be content managed so I fell back on Silverstripe which is an open-source CMS written in PHP. I've used it before and have a lot of confidence in it. It also includes a custom forms and blog module that I could leverage. That much was pretty standard. The major challenges was to build in way to incorporate user generated content for contests. PNB wanted to allow users to upload photos, but they wanted to have a registration/paywall to prevent abuse. Additionally they wanted a way to store the uploaded photos in their SmugMug account to allow for an approval process and anything approved would display on a gallery page. For the registration process I knew I could use Magento. It's another free open-source option that allowed heavy customization. I immediately went to work prototyping this section knowing it would be the most difficult.
The photo uploading was a complex process but eventually I was able to customize Magento to force users to register or login first. After that I could drive all traffic to the upload page. This page would utilize drag and drop when the browser supported it. The upload form itself was customized to allow users to pick a category each photo would be submitted to. This required me to embed the category into the photo meta data, upload the photo to the server, add the product to the cart and handle any cart modifications. Once the user was finished they were pushed to the payment section where after the payment was processed a custom event fired to extract the category from the meta data, look up the corresponding SmugMug category information in SilverStripe CMS and upload the photo to SmugMug to the appropriate category. The photos were immediately set to hidden until a manager was able to review and approve the photo. Once approved the photos would be visible on the gallery page.
I've built a lot of complicated applications but I can't say I've ever built anything like this. I spent a lot of time doing research, testing API's and just running into a lot of dead ends. I eventually found the right combination of technology but it took several months just to get everything working smoothly and fine tuning everything. I'm extremely proud of this project.