Core, Components, Apps
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
- Configuration
- Notifications
- Attachments
- Tags
Custom Apps
- Contacts
- Calendar
- Tasklist
- Jabber
To be refined...
- Last Author
- bruederli
- Last Edited
- Feb 14 2016, 8:44 PM