Dithaka is a platform that is designed to ease the creation of collaborative software. At present, it integrates the Jakarta James mail server with a Jakarta Tapestry front end to offer the services of basic messaging, document storage and event management. It uses a metadata layer to link elements (e.g. a Document, Conversation or Event) to domain objects (e.g. a Project, a Class or even another collaborative element) to allow for structures that can (hopefully) map your problem accurately.