Visit Sourceforge Project Site

A Zope/Apache Cocoon-based calendaring system

MightyCal is a powerful calendar/schedule building program which aims to be the MS Access (tm) of the Web calendaring world.  It provides an easy-to-use administration interface for developing custom calendars of many types, from simple event bulletin boards, to schedulers of human/physical resource availability, to schedulers which automatically take programmed actions.  Users of a MightyCal site can choose to view calendars in a wide variety of formats on numerous devices, from standard HTML to PDF and WML. 

MightyCal's architecture combines the object-oriented web development of Zope with the XML transformation capabilities of Cocoon.  There are two portions to the application: the Zope backend, which is implemented as a Python Product for Zope, and the Cocoon frontend, which is implemented as a Tomcat web application.  The backend holds the Event data itself, and provides the administrative interface for constructing and maintaining Calendars.  The Cocoon frontend is responsible for the display of calendars in the user's chosen format.  A powerful template language and stylesheet editor provides the administrator the ability to develop calendar views that automatically display in all available output formats without the need to write code for each format.

Contents of this site




Project Architecture

The MightyCal calendaring system has four main features that will distinguish it from other calendar webapps.
  1. Custom calendar building.  The Zope drop-in Product will create a webapp with an administration interface, that will allow the Administrator to build custom calendars.  A custom calendar consists of a set of event types defined by the administrator, along with (customizable) "Intermediate-Language" templates for producing the calendar displays that users will see.  Thus, an events calendar could be defined as holding Meetings, Lectures, Holidays, and Sports Events, each of which has its own set of fields.  The administrator would be able to customize the display templates using CSS, to "skin" the site in a way appropriate to the users of the site.
  2. Advanced Field Types.  In addition to the usual field types (e.g. string, integer, date, etc), MightyCal defined Action fields and Non-Shareable Resource fields.  Action fields have Python (or Perl) code associated with them that gets executed at a specified time relative to the time that the Event occurs.  Actions can include such things as emailing people who have signed up for a meeting, or issuing commands to hardware devices (for instance, starting a webcast for a lecture).  Non-Shareable Resource fields allow the calendar admin to define "resources" that cannot be used by two parties during the time that the event is going on.  Thus, defining an event for a particular time creates a "lock" on the resource.  Examples of resources might be rooms, computers, rentable videos, people, or webcasting cameras.  Thus, a MightyCal instance can easily host room schedulers, personal calendars, or device controllers.
  3. Multiple Display Formats.  The Zope backend of MightyCal generates an intermediate form of XML, a so-called "widget language", that gets transformed by XSLT into a destination display format.  Apache Cocoon is used as the XSLT transformation engine, because it supports a vast array of formats, such as HTML, RDF, WML, VoiceXML, SVG, PDF, RTF and plain text.  The XSLT is also stored in the Zope backend, where an administrator can edit it in order to support more destination formats, or else customize the standard XSLT templates.  The combination of Zope and Cocoon (i.e. Python and Java) mean that a very hefty server is required to run the entire system, or else the Zope backend should be run on a separate server from the Cocoon frontend.
  4. Extensive User Customizability.  MightyCal will include support for "registered users" who can build their own "virtual calendars", by defining criteria for events that will appear in them.  Also, users can request notifications of events.  Finally, MightyCal will export RSS/RDF files that can be plugged into other portals to provide "My Calendar" applets.


Hosted by:
SourceForge Logo