Appearance
Versions
DANGER
This document has not been updated since version 0.0.3 and is not ready for production. It will be updated before version 1.0 of the project is released.
App versions are containers of features, organizing account-level application functionality (e.g. Basic, Advanced, Professional). While accounts may have access to multiple versions, they can only subscribe to one at any given time.
See the architecture page for additional information.
Creating versions
Versions are fully managed using the Backstack dashboard, including their assignment to domains with prescribed feature access. Resulting configurations are included in the app schema for use within your codebase.
Example versioning
Version | Description |
---|---|
Basic | Provides access to basic application functionality. This version of your application could be free. |
Advanced | Provides all the functionality of the Basic version plus additional features. You'll probably assign a fee to this version. |
Premium | Provides all the functionality of the Advanced version plus additional features. You'll probably assign a fee to this version. |
Monetizing versions
Invoice items are automatically generated when any of the following fees are implemented.
Fee | Description | Implementation |
---|---|---|
Version fee | Collect a fee for any version of the application functionality. | Implement in each domain.version . |
User fee | Collect a fee for each account user. | Implement in each domain.version . |
Optional feature fee | Collect a fee for any feature designated as optional . | Implement in each domain.version.features . |
See invoicing-accounts for additional information.
Allowing accounts to select versions
Manage version configurations through the Backstack dashboard. Allow accounts to select their preferred version using your user interface, leveraging pre-configured app schema data and the API.
See the version assignment workflow for incorporating account-based version management into your UI.
The Version object
json
// version object
{
"id": "ver_1234567890",
"title": "App",
"description": "Version for the main application.",
"tag": "v1",
"is_default": 1,
"status": "active",
"features": [
{
"id": "fea_1234567890",
"title": "Account",
"human_id": "account"
},
...
]
}
Property | Type | Description |
---|---|---|
id | String | The version ID. |
title | String | The title of the version. |
description | String | The description iof the version. |
tag | String | The sort tag associated with the version. |
is_default | Boolean | Whether the version is the default when signing up. |
status | String | The status of the version (active or inactive ). An inactive version haa no accounts subscribed. |
features | Array | An array of features included in the version. |
features.id | String | The feature ID. |
features.title | String | The title of the feature. |
features.human_id | String | The human-readable ID. |