Simple example of a Forge app with Custom UI, based on a monorepo structure using Turborepo.
- Simple build and dev workflow
- Allows extracting shared logic to separate packages
- Easily use shared logic in Forge backend (FAAS) and custom UI frontend
Make sure you have the required dependencies to develop Forge apps installed. See Getting started for instructions.
After that, run npm install
from the project root. This will install dependencies for the root project and all sub-projects (custom UIs and Forge app).
Register the Forge app by running the following command from the apps/forge
folder
forge register
Build the app from the project root directory by running
npm run build
This will build shared dependencies (packages
), custom UI project and finally deploy the Forge app.
Finally, install the app, again by running the command from the apps/forge
folder
forge install
The development process does not work yet as expected (see Known Issues below).
npm run dev
To work around this issue do the following:
- Remove the
dev
script fromapps/forge/package.json
- Run
npm run dev
from the project root - Run
forge tunnel
fromapps/forge
directory
Simply run the following command from the project root:
npm run build
Running turbo run dev
(or npm run dev
) from the project root does not work as expected. Forge tunnel complains the input device is not a TTY
which seems to have to do with the Docker process startup.
Additionally, the Forge linter produces the errors, but they are not fatal. Linting errors seem to be an issue with relative paths in the manifest.yml
:
=== Running forge lint...
/app/manifest.yml
23:10 error missing index.html file in directory (../issue-panel/build) is being referenced by a custom UI resource in jira:issuePanel module valid-resource-required
23:10 error missing directory '../issue-panel/build' is being referenced by 'issue-panel-resource' in resources valid-resource-required
27:10 error missing index.html file in directory (../issue-glance/build) is being referenced by a custom UI resource in jira:issueGlance module valid-resource-required
27:10 error missing directory '../issue-glance/build' is being referenced by 'issue-glance-resource' in resources valid-resource-required
To run specific Forge CLI commands (forge register
, forge install
, etc.), you should run them directly from the apps/forge
directory. However, it should not be too difficult to tweak Turborepo to allow running them from the project root as well.