Curriki Architecture

The Curriki Architecture uses the General XWiki architecture for programming as well as adding an AJAX programming using a REST services and an extjs javascript implementation.

XWiki Programming Model


The XWiki storage is used for storing the Curriki Assets using the Curriki Data Model.

General APIs

Curriki provides some generic modules that provides apis for the other modules. Some of these modules are XWiki modules or extensions to XWiki modules:

  • Curriki REST Service: the modules provides read and write REST access to the assets. This calls in the Curriki plugin.
  • Curriki Plugin: allows to access the asset informations in read or write.
  • Curriki Space Manager: allows to manage groups creation and management of groups information in read or write. This uses the XWiki space manager.
  • XWiki Invitation Manager: allows to manage groups join requests and invitation for groups.
  • Curriki Activity Stream: allows to manage updates in groups and provide RSS feeds. This uses the XWiki activity stream.
  • Curriki lucene: extended version of the XWiki lucene plugin for search.
  • Curriki mimetype: allows to access the asset type configuration.


The main entry point is the XWiki standard entry points (view.vm) which delegates the view to xwiki stored pages depending on the document class or the page requested.

  • Header, Footer are handled in the skin templates in skin/curriki8
  • Navigation is handed by the Panels in the Panels space and the breadcrumb as macros called from the skin
  • Assets are handled by sheets in the CurrikiCode space, complemented by macros and templates in skin/curriki8/assets
  • Registration is stored in Main.JoinCurriki
  • Blog is stored in the Blog space
  • Groups is stored in the Groups space, complemented by macros in skin/curriki8/groups
  • My Curriki is stored in the MyCurriki space, complemented by macros in skin/curriki8/mycurriki
  • Search is stored in the Search space and is handled by AJAX in extjs
  • CRS is stored in the CRS space
  • FileCheck is stored in the FileCheck space


  • Registration action is handled directly by Main.JoinCurriki
  • Blog actions are handled by XWiki scripting
  • Assets action are handled by multiple systems
    • Add path uses extjs and the REST service calling the curriki plugin
    • Asset Edits will use XWiki scripting with AJAX XWiki services in scripting calling into the Curriki Plugin for Asset edits.
    • Comments are handled using XWiki scripting
  • MyCurriki uses XWiki scripting for profile editing
  • Groups
    • Groups uses XWiki scripting and AJAX XWiki services in scripting calling into the space manager for Groups configuration and invitations
    • Groups uses scripting for Messaging and Documentation
  • CRS and FileCheck uses XWiki scripting for administration and extjs for CRS Nomination
This wiki is licensed under a Creative Commons 2.0 license
XWiki Enterprise 12.10.5-node1 - Documentation