CMS for your Web Application on Google App Engine
We have been working on Google App Engine right from its early stages and have developed several Web applications of various complexities on the platform. Recently we got a request from one of very large enterprise clients to port their existing (in-premise hosted) Intranet over to Google App Engine. As they had already decided to move their existing mail infrastructure to Google Apps, it was logical for them to leverage the benefits of Google App Engine for their Intranet as well.
In most of the scenarios, Company Intranet servers as a placeholder for sharing information among the employees. The information can be about new projects, upcoming events, quarterly/annual reports, birthdays, training calendar etc. and it generally keeps on changing at regular intervals. It would be ideal to have a CMS(Content Management System) embedded inside our web application. On one hand, Google App Engine would provide us the standard benefits of PaaS cloud while CMS would let us quickly and easily edit the contents without going through build and deployment cycles. For CMS, our preference was for Open Source solution for reasons of cost and also the possibility to modify the source to suit our requirements. During our search we came across following options:
Our client’s technical team is well-versed with Java and for long-term maintenance reasons, we decided to stick to Java based solutions. After evaluating all Java based options, we decided to use Vosao for building our Intranet. Below are some of the reasons for the decision:
Ease to Get Started If you are a Java developer and have been working on GAE/J platform, it’s a breeze to get going. Following are the simple steps we had to execute for getting first version of our application with CMS capabilities up and running on GAE:
- Create an App Engine application ID from Google App Engine console
- Download Vosao war file from Vosao download Site
- Extract war file in a folder. Modify the contents of …/WEB-INF/appengine-web.xml file in your extracted folder by replacing the application name with your application identifier.
- Upload the extracted folder using your GAE SDK installation
Templating Vosao renders the content through Templates and structures. It provides a couple of simple templates for you to get started but we could easily write our own templates and integrate them into the application. A template, as the name suggests is a mechanism to provide structure to one or multiple pages for the entire web-site it’s sub-sections. In our case, we were working with a Design team for Look & Feel of the application and each department used to provide the content for their own sub-section of Intranet. The Templating mechanism allowed us to easily merge the two. Some of the benefits of Vosao templates and structures we found during the course of our development:
- Complete control on every aspect of the markup rendered by Template
- Easy integration with externalized Style Sheet and Java Script files
- Easy integration with external resources like images, documents etc
- Use of Apache Velocity Templating Engine which is quite popular and easy to follow along with lot of documentation available on Internet
Content Management Here comes the real meat of the entire application and we were not disappointed by Vosao offerings. Again a brief listing of features we used and found quite helpful for managing the content in our case:
- Friendly URLs
- HTML and Rich Text Editor
- Cache Enabling
- Approval Process (if you need)
- Versionning (very helpful when you want to store historic information)
- Possibility to have children pages
- Possibility to group resources for a section / page at the same location
- Form & Mail capabilities along with Captcha Integration
Extensible Architecture More often than not, we come across requirements which are not provided by the product off the shelf. In those cases, we would love to be able to add these features without modifying the core of the application. This is exactly the capability provided by Vosao through plugin integration. Using simple to follow steps, we can develop a vosao plugin, deploy it over the top of Vosao application and can access it from any of the template or content pages. I will talk more in detail about Plugin development in a separate post.
Additional features Some of the other offerings from Vosao which we found very helpful are:
- Export/Import At any point of time, we can export the entire or portions of site into a file and then import it back into another Vosao application. We found it quite useful while developing, deploying and testing our Intranet on multiple application instances. It can also come handy as a back-up of the site at logical milestones though there is a separate back-up plugin available for the specific purpose as well
- Picassa Integration We wanted to integrate Picassa albums into our Intranet site and this is available off-the shelf from Vosao. We just need to provide user id and password of the relevant user.
- Google Analytics & SEO Though not relevant for an Intranet, Vosao provides a very easy and fine-grained integration for Google Analytics and SEO purposes.
Problems we faced No Software project is ever complete without its fair share of problems and ours was not an exception. Though I have to say in the case of Vosao, we had very minimal issues. One of the issues was that one fine day, the deployed application started behaving abnormally and everything appeared to be broken. But Vosao development team provided a fix in a very short span of time. Going a bit deeper, the real reason behind the problem was modification in Google App Engine APIs which resulted in breaking Vosao. I guess these are kind of the problems we have to be prepared for while working on SaaS or PaaS platforms as back-end updates happen automatically and most of the times, we can only take corrective actions.
Conclusion Overall, it was a very nice learning experience for us with Vosao. The API and features are quite rich and easy to use. The community and development teams are very active and helpful. Lot of useful plugins have been developed and are available for use or we can develop our own which is also quite straight forward. It has been implemented and used at quite a number of places. For full-listing and capabilities, please refer to Vosao web-site.
I would strongly recommend giving Vosao a try while thinking about integrating a CMS in your Web Application for Google App Engine.