The folks at Yeti and UseAllFive recently worked on building Google VetNet, a website portal for returning military veterans to start civilian careers. Behind the scenes of Google VetNet is a Content Management System (CMS) powered on Google+. In this article, we'll tell you how we adapted the social network features of Google+ to make it a calendar-based CMS.
Google+ offers several features that make it a CMS. At the core is an Application Programming Interface (API) that allows third-party access to Google+ data. APIs are an industry standard where websites open their data to third-party developers. The Google+ API offers access to a user's Google+ public activities such as authorship, status updates, events, and pages. Authorship is associated to the user's own account, but activities can be shared from another person. Status updates can store chronological content. Google+ events can be aggregated to create a calendar. Google+ pages can organize content into categories.
We had some challenges when building the CMS because of limited public data in the Google+ API. Although the message of the day is obtained easily from the latest status update, events in categories weren't as straightforward. The Google+ API publishes the event's URL but it does not show the start and end time. We circumvented this limitation by combining data from Google+ and Google Calendar APIs and using the event URL as a primary key. Furthermore, content creators have to publish these events in a specific way: each Google+ event is added to a Google+ page, where each Google+ page represents a category; each Google+ event has to be shared publicly; and the calendar linked to the Google+ account must be shared publicly. To make the calendar public, the user has to change the setting once in Google Calendar, not Google+.
So far we've described a way to create events and categorize them. If you look on the Google VetNet website, you'll notice that categorized events are organized in four streams. We weren't able to figure out how to create hierarchical categories in Google+. As a workaround, we made four separate Google accounts for the separate streams.
In summary, Yeti and UseAllFive created a CMS using Google+. Given the limited public data available in the Google+ API, we had to find creative solutions and workarounds to flush out the calendar-driven CMS. By building on the Google+ ecosystem, events are easily shared by other people and data is stored reliably on the Google cloud.