Cadence is a distributed, scalable, durable, and highly available orchestration engine we developed at Uber Engineering to execute asynchronous long-running business logic in a scalable and resilient way.
This web UI is used to view workflows from Cadence, see what's running, and explore and debug workflow executions.
Set these environment variables if you need to change their defaults
Variable | Description | Default |
---|---|---|
CADENCE_GRPC_PEERS | Comma-delimited list of gRPC peers | 127.0.0.1:7833 |
CADENCE_GRPC_SERVICES_NAMES | Comma-delimited list of gRPC services to call | cadence-frontend |
CADENCE_CLUSTERS_NAMES | Comma-delimited list of cluster names | cluster0 |
CADENCE_WEB_PORT | HTTP port to serve on | 8088 |
CADENCE_ADMIN_SECURITY_TOKEN | Admin token for accessing admin methods | '' |
Note: To connect cadence-web
to multiple clusters, you will need to add comma-delimted entries for CADENCE_GRPC_PEERS
, CADENCE_GRPC_SERVICES_NAMES
& CADENCE_CLUSTERS_NAMES
for each cluster (each cluster values are grouped by their index within the Comma-delimited lists).
Example:
CADENCE_GRPC_PEERS=127.0.0.1:3000,127.0.0.1:5000
CADENCE_GRPC_SERVICES_NAMES=cadence-frontend-cluster0,cadence-frontend-cluster1
CADENCE_CLUSTERS_NAMES=cluster0,cluster1
The latest version of cadence-web
is included in the cadence
composed docker containers in the main Cadence repository. Follow the instructions there to get started.
docker-compose -f docker/docker-compose.yml up
cadence-web
requires node v18
or greater to be able to run correctly.
To create a production build, follow these steps:
- Install npm packages and download idls
npm install && npm run install-idl && npm run generate:idl
- Build the project files
npm run build
- After building the code, start the server by running this command from the same directory as the build
npm start
- Once the webapp is ready, access it through
localhost:8088
(port can be changed usingCADENCE_WEB_PORT
environment variable)
To run the development server, follow these steps:
- Install npm packages and download idls
npm install && npm run install-idl && npm run generate:idl
- Run the development server using
npm run dev
- Once the webapp is ready, access it through
localhost:8088
(port can be changed usingCADENCE_WEB_PORT
environment variable)
Note: For contribution we recommend using dev containers, check VSCode Dev Containers section for more information
- Set up the Remote Containers plugin in VSCode.
- Open the cadence-web directory in VSCode.
- Make sure to update
CADENCE_GRPC_PEERS
with the correct host. (If you are connecting to a server on a container host machine usehost.docker.interal:7833
, where7833
is the gRPC port for a running cadence-frontend service) - Use the Command Palette to select the 'Reopen folder in Container' option
- Follow same commands listed in Running development environment section.
To start development against dockerized cadence services, run the following command from the root of the project
docker-compose -f docker-compose-backend-services.yml up
You can customize the YAML file or reuse configurations from the cadence repository. (In case of reusing exsisting files: ensure that cadence-web is not included in the composed container services, or just remove it)
After running cadence
, start cadence-web
for development using one of the previous methods (Running development environment, VSCode Dev Containers)
script | Description |
---|---|
build | Generate a production build |
start | Start server for existing production build |
dev | Run a development server |
install-idl | Download idl files required for building/running the project |
generate:idl | Move idl files inside the project and generate typescript types for them |
test | Run all test cases. To pass extra jest flags, use environment specific scripts e.g. test:unit:* |
test:unit | Run all unit tests. To pass extra jest flags, use environment specific scripts e.g. test:unit:* |
test:unit:browser | Run only browser unit tests |
test:unit:node | Run only node unit tests |
lint | Run eslint |
typecheck | Run typescript checks |
MIT License, please see LICENSE for details.