At the high level, an Ocean app is a bundle that includes a YAML template and scripts. It’s useful to think of an app template as an abstraction that loosely follows the model-view-controller (MVC) pattern.

App data includes variables set by the app developer in the template. It also includes files in the files directory.

The app controller part of the template is a multi-step orchestrator that allows the app developer to define multiple parallel or sequential engines. An engine is a container lifecycle definition.

App’s UI is a dashboard that displays engine-level visual components defined by the app developer.

All of those components are packaged in the Ocean app bundle. The concrete components of the bundle are as follows:

  • app.yml is the main app template.
  • file provides a description of the app.
  • logo.png is an optional app logo. We recommend including a 400x400 square file for the best quality.
  • files directory includes dynamically parsed files for app engines.

All Ocean apps support dynamic values in engine files and most app.yml properties. To parse those values Ocean uses Liquid template engine.

For reference, consider checking out example apps in our official GitHub.