There is a [[Shell]], which is responsible for providing the outer UI, loading and saving IIIF via plugins, importing content resources (e.g., images and image services) via plugins, and sending your IIIF to external applications for [[Preview]]. Some of the plugins are always available (unless you disable them), but some you might develop yourself to integrate the Manifest Editor into your own systems and workflows.
Then there are [[Apps]] - inside the Shell, that provide the editing UI for the loaded IIIF resource. Only one app is active at a time. This model allows different tasks to have their own suitable UI. The most common app is also called Manifest Editor, and it provides a visual environment for assembling a manifest, adding canvases, adding content to canvases and adding annotations. Image Range Editor is another app suited to creating simple IIIF Ranges within an image-based Manifest. Other apps can follow, e.g., to make ranges on time-based media (like Timeliner); to split large manifests into small ones (like Sorting Room), and other utilities.
[[Configuration]] establishes what plugins are available in the Shell, what Apps are available within the Shell, what top-level menu items are available (e.g., configuration of multiple preview environments appropriate to the work). Each app has two types of configuration - firstly, what it needs available or hidden in the Shell’s menus, and secondly its own configuration. For the Manifest Editor App, its own configuration specifies whether some parts of the manifest, or properties, are not available for editing, and also constraints and/or extensions on properties, like extra behavior
values. This allows the general manifest editor to be optimised for particular custom editing tasks without necessarily having to create a bespoke app for that task.
Both the Shell and Apps make use of Widgets - components that form a sub-part of the UI. In the Shell, these are the various customisable sources and destinations for loading, saving and importing IIIF, and importing content resources. In Apps, they are the various editing controls - e.g., a label editor - and navigation components like trees and canvas thumbnail strips. One of the Widgets is the editable Canvas itself, a component that uses Canvas Panel.