/ui-server

Golang Server for https://github.com/temporalio/ui

Primary LanguageGoMIT LicenseMIT

ui-server

build E2E Tests Publish Docker image Update UI Submodule

ui-server serves an HTTP API analogue of Temporal gRPC API as well as serves Temporal UI https://github.com/temporalio/ui. It can be compiled into a binary or consumed as a Go library.

Docker

Using Temporal CLI

You can install Temporal CLI using Homebrew:

brew install temporal

You can start a Temporal server in development using the following command:

temporal server start-dev

You can access the UI by visiting http://localhost:8233.

Using Docker

After pulling down the lastest version of Temporal's docker-compose, you can access the UI by visiting http://localhost:8080.

You can run it with Temporal Server using the Temporal docker-compose.

See Docker README for more details on running Docker images

Configuration

pnpm install
pnpm run build:local
pnpm run preview:local

Using Docker

If you're running the development version of the UI and you want to point it at the docker-compose version of Temporal, you can run this command:

pnpn run build:docker
pnpn run preview:docker

Developing

Developing the UI has the same prequisites as trying it out. Once you've created a project and installed dependencies with pnpm install, start the development server:

pnpm start

and open localhost:3000.

By default, the application will start up with a version of the UI for the local version of Temporal. You can start the UI for Temporal Cloud by setting the VITE_TEMPORAL_UI_BUILD_TARGET target to cloud. Alternatively, you can use either of the following scripts:

pnpm run dev:local
pnpm run dev:cloud

Using Docker

If you want to point the development environment at the docker-compose version of Temporal, you can use the following command:

pnpm run dev:docker

Building

The Temporal UI must be built for either the local version or Temporal Cloud. You must set the VITE_TEMPORAL_UI_BUILD_TARGET environment variable in order to build the assets. This will be set for you if you use either of the following pnpm scripts.

pnpm run build:local
pnpm run build:cloud

The resulting assets will be placed in .vercel/output/static.

  • Alternatively you can pass a .yaml configuration file based on the Dockerize template . Ex development.yml config

Check out the configuration docs for more details

Development

Variable Description Default Stage
VITE_API Temporal HTTP API address. Set to empty `` to use relative paths http://localhost:8322 Build
VITE_MODE Build target development Build

Developing with Canary

To get a better representation of production data, you can run our UI with the canary-go repo. You will need Go installed on your machine.

canary-go

make bins
./temporal-canary start

temporal

make bins
TEMPORAL_ENVIRONMENT=development_sqlite make start

tctl

make build
./tctl config set version next
./tctl -n canary namespace register
./tctl -n default namespace register
./tctl cluster add-search-attributes -y \
 	--name CustomKeywordField --type Keyword \
 	--name CustomStringField --type Text \
 	--name CustomTextField --type Text \
 	--name CustomIntField --type Int \
 	--name CustomDatetimeField --type Datetime \
 	--name CustomDoubleField --type Double \
 	--name CustomBoolField --type Bool

To view the search attributes code: https://github.com/temporalio/docker-builds/blob/main/docker/auto-setup.sh#L297

ui-server

make build-server
./ui-server start

Debugging

In VSCode launch "Debug Server" script (or press F5)