The App Manager

The App Manager is a technical tool for configuring, building and deploying Apps. An App can have multiple platforms to run on.

Workflow

An App is a single, isolated entity. All other resources are dependent on a single App – they cannot be shared between Apps.

An App can have a arbitrary number of Platforms. A Platform is a special configuration for building the App. It consists of exactly one CodeSource, exactly one DataSource and at least one (but possible more) Targets. Dependent on its type, the platform will build a specialized product when a Build is created.

Available CodeSource Types, DataSource Types, Target Types and Platform Types can be obtained by getting the Types resource. There may be dependencies: a type may require an explicit platform (e.g. the TargetType 'App Store' could only work with the PlatformType 'iOS').

When creating a Build for a Platforms, the App Server will obtain Code from the CodeSource, Data from the DataSource, then build it according to the Platform and save it for later use. A successful Build can then be deployed to one or many selected Targets of all configured Targets of the Platform by creating a Deployment.

A Build or a Deployment is either running, failed or successfully finished.

App Manager API

Make sure to read entrecode API Basics first.

State Diagram

State Diagram

Link Relations

Link Relation names are those registered with the IANA. Additionally, custom link relations are used which are built in the form https://doc.entrecode.de/en/latest/App_Manager/#link-relations/<relation>. Those relations are also links to their own documentation (on this page). For brevity, CURIE Syntax is used which results in relation names of the form ec:<relation>/<optional_subrelation>.

Additional to the official link relations defined by IANA the App Manager uses the following:

Link Relation Target Resource Description
ec:app App A single App
ec:app-stats App Stats App Statistics
ec:app/build Build A single Build
ec:app/build/by-id Build Templated Link Relation to a specific Build by buildID
ec:app/build/latest Build The last build of a Platform
ec:app/builds Build List List of Builds
ec:app/builds/options Build List Filter Options of the Build List
ec:app/by-id App Templated Link Relation to a specific App by appID
ec:app/codesource CodeSource The configured CodeSource of a Platform
ec:app/codesource/by-id CodeSource Templated Link Relation to a specific CodeSouce by codeSourceID
ec:app/codesources CodeSource List CodeSources configured in an App
ec:app/codesources/options CodeSource List Filter Options of the CodeSource List
ec:app/datasource DataSource The configured DataSource of a Platform
ec:app/datasource/by-id DataSource Templated Link Relation to a specific DataSource by dataSourceID
ec:app/datasources DataSource List DataSources configured in an App
ec:app/datasources/options DataSource List Filter Options of the DataSource List
ec:app/deployment Deployment A single Deployment of a Platform
ec:app/deployment/by-id Deployment Templated Link Relation to a specific Deployment by deploymentID
ec:app/deployment/latest Deployment The latest Deployment of a Platform
ec:app/deployments Deployment List All Deployments of a Platform. Also used to create a new Deployment
ec:app/deployments/options Deyploment List Filter Options of the Deployment List
ec:app/platform Platform A single Platform
ec:app/platform/by-id Platform Templated Link Relation to a specific Platform by platformID
ec:app/platforms Platform List A list of Platforms of an App
ec:app/platforms/options Platform List Filter Options of the Platform List
ec:app/target Target A configured Target of a Platform
ec:app/target/by-id Target Templated Link Relation to a specific Target by targetID
ec:app/targets Target List Targets configured in an App
ec:app/targets/options Target List Filter Options of Targets List
ec:apps App List List of Apps
ec:apps/options App List Filter Options of the App List
ec:apps/types App Manager Type Info Information about available CodeSource-, DataSource-, Target- and Platform-Types