dropserver

Github

Dropserver Application Manifest

Applicable Versions:

This page is valid for version 0.12.0 and above.

The Dropserver application manifest is a JSON file located at the root of package and always named dropapp.json.

The manifest represents data that pertains to a specific version of the app. Some of the data is different from version to version (such as the version value) while others may be the same (such as the application name).

Some parts of the manifest are written directly by the app developer, typically by manually editing dropapp.json, others are generated by the application packaging system.

Manifest files and the installation flow

The application packaging system runs the app in a sandbox and acquires metadata about the app by querying the running app. This metadata is then combined with the data in dropapp.json to create a complete manifest that is included in the package (instead of the original dropapp.json).

When a user uploads a new app or new version of an app, the process is repeated: the system runs the app in a sandbox, and overwrites the metadata from the running app in the manifest. This ensures that tampering with the manifest values has no effect.

Manifest Reference

The following are keys of the manifest JSON object. All are optional except for version, though many are highly recommended for obvious reasons.

Note:

The manifest file must be in the root of the package and must be named dropapp.json.

name: The application name. Try to keep it under 30 characters.

version: Required. The Semver 2.0 version of the app. For the time being please avoid including pre-release and build metadata in the version.

entrypoint: If the module that exports your app is not app.ts or app.js, you can specify the path (relative to the root of the package) to that module here.

icon: Relative path to application icon. Icon should be in the app package and should be jpg, png, svg, or webp. It should be square and at least 160 pixels in size. Please run your icon file through an optimizer program to keep the file size to a minimum!

accent-color: A CSS color to use to make the app stand out. Currently this color is applied to a thick border above the app box. Choose a bold color that marries with your icon colors. Assume the background is white or light grey, but do not worry about accessibility: the color is never used for text or as a background to text.

short-description: A short description for the application. Tell the user what this does for them in one short sentence. Try to keep in under 60 characters.

changelog: Relative path to a plain text file containing a human-readable description of changes in the current version. By default the system tries to read /changelog.txt in the package if nothing is specified here. The changelog follows a specific format.

authors: An array of objects listing the authors of the app. Each author object consists of: name, url, and email. At times only the first few authors of the array will be shown, therefore these should be the main authors.

license: The software license as a SPDX string.

license-file: A path to the license file relative to the package root.

website: The URL of the website for the app. This could be a complete website, a single page, or a blog post introducing the app.

code: The URL of the app’s code repository.

funding: The URL where the author(s) can accept donations. If there are several options for donating, consider making a page on the app or author site that lists these options.

Automatically Generated Manifest Reference

These additional keys are automatically generated by the app packaging system:

schema: The integer version of the appspace data schema.

migrations: An array of migration functions that the app code provides.

release-date: The date in GMT is added by ds-dev at packaging time. It serves to tell the user how old or recent this release is.