Core, Components, Apps
Updated 1,029 Days AgoPublic

Core, Components, Apps

This article shall describe the granularity of Components aka Plugins aka Apps that build the entirety of the application.

Terminology

Throughout the documentation different terms have been used so let's define them for the sake of having a common language to talk about the same things.

Shell

The very basic application environment as described in What is the Roundcube Shell?.

Components

With Components we refer to Ember Components which are re-usable building blocks for the application UI.

Services

Following the Ember terminology, Services are (singleton) utilities provided by the shell such as Session data storage, the JMAP adaptor or the pub/sub system.

Apps

Everything else is commonly referred to as an App. It's basically what others call Plugins but with a more fancy marketing-affine name :-)

The shell provides no business logic but only a basic framework and some storage facilities. Thus every functionality of the actual web application is built as an app. The concept of apps is that they can be loaded individually and are also exchangeable to a certain extent. How they can be integrated into the application pages is described  here.

Apps can access with the shell and services directly but primarily interact with the core system and other apps through the pub/sub system.

Apps can be "headless" modules adding/modifying/augmenting data or UI regions or they can add entirely new features to the application with their own routes, controllers and views. Like a calendar application or a collaborative document editor.

In order to keep the Roundcube Next Shell as thin as possible, we suggest to implement almost everything as an app. This also includes fundamental functions like displaying notifications and alerts to the user or handling file uploads. We therefore distinguish core apps and custom apps.

Components

This is a non-exhaustive list of UI components, the Roundcube shell should provide:

  • Button (with a command/action assigned)
  • Toolbar
  • Menu with Items
  • Simple list
  • Data table
  • Treelist
  • Forms (fields, groups, tabs)
  • Person/Contact (sender, recipient, organizer, event attendee, assignee, file owner, etc)
  • Popup dialog

Core Apps

Custom Apps

  • Mail
  • Contacts
  • Calendar
  • Tasklist
  • Jabber

To be refined...

Last Author
bruederli
Projects
None
Subscribers
vincent, Adityab