Skip to content

Setup Guide

mcmahj45 edited this page Jul 24, 2026 · 6 revisions

Setup

DRES consists of two components: the backend and the frontend, each in subdirectories of this repository. The backend is written in Kotlin and requires a JVM. The frontend is written in Angular. The entire build process is Gradle based.

Building DRES

./gradlew distZip

or alternatively:

./gradlew distTar

Updating DRES

Pull the latest changes from the repository, then run:

./gradlew clean distZip

Configuration

Both the backend and the frontend have several properties which can be configured using a JSON configuration file.

Backend Configuration

The backend does not search the current directory for a config file. Configuration is only read if you pass a path to it as the first parameter when starting the backend; without an argument, all settings use their built-in defaults. The configuration file is structured as follows. All values are optional and override the defaults listed below if set — unknown keys are silently ignored, so check field names and nesting carefully.

{
  "httpPort":              8080,
  "httpsPort":             8443,
  "enableSsl":             true,
  "keystorePath":          "keystore.jks",
  "keystorePassword":      "password",
  "externalMediaLocation": "./external",
  "dataPath":              "./data",
  "cache": {
    "cachePath": "./cache"
  }
}
Field Default Description
httpPort 8080 Port used for HTTP
httpsPort 8443 Port used for HTTPS, if enabled
enableSsl true If true, HTTPS is enabled on httpsPort. Note that httpPort remains active at the same time — enabling SSL does not disable plain HTTP.
keystorePath keystore.jks Path to the Java KeyStore file for the SSL certificate
keystorePassword password Password for the KeyStore file
externalMediaLocation ./external Path for external media items
dataPath ./data Path where the local database is stored
cache.cachePath ./cache Path where pre-rendered media items are cached (nested under a cache object; see below)

The cache object also accepts cleanupIntervalMs, evictionThresholdMs, maxRenderingThreads, ffmpegPath, logoMaxSize, previewImageMaxSize, and previewVideoMaxSize — see CacheConfig.kt for current defaults.

The frontend has its own configuration at frontend/src/config.json (endpoint.host, endpoint.port, endpoint.tls, effects.mute), built into the bundle via ./gradlew packageFrontend -DincludeConfig. Its endpoint.tls flag should match the backend's enableSsl.

Run dres config from the CLI to print the actively resolved configuration, including the resolved FFmpeg path and other cache settings (note: it does not print the resolved cache directory path itself).

See Advanced Setup Options for instructions on generating a KeyStore for HTTPS.

First Steps

The following steps walk through the initial setup of a DRES instance. The DRES CLI help command lists all available commands; use -h on any command for more detail.

Create User

Using the CLI, create your first administrator user:

DRES> user create -u admin -p password -r ADMIN

Do not use this password in production.

Additional users are required to run an evaluation:

  • -r PARTICIPANT — a user that belongs to a competing team and submits results
  • -r JUDGE — a user that can manually judge submissions
  • -r VIEWER — a read-only user that can observe a run without interacting

See User Management for more detail.

Create Media Collection

Create a media collection using the CLI:

DRES> collection create -n first -d "A description of the collection" -p path/to/media

Then scan the folder to import media items:

DRES> collection scan -c first -vt mp4 -it jpg

Use -vt for video file extensions and -it for image file extensions. Both can be specified together for mixed collections.

See Media Collection Management for the full process including importing video segment information.

Create a Competition Template

Competition templates are created and managed from the DRES web UI. Log in with your administrator account and navigate to the Evaluation Template Builder section.

From there you can add task groups, task types, and individual tasks. See Competition Management for details.

Create a Competition Run

A competition template serves as the template for one or more competition runs. Once a run is created, changes to the template are not reflected in the run.

Competition runs are created from the Evaluation Runs view using the "+" button. Both SYNCHRONOUS and ASYNCHRONOUS run types are supported.

Running the Competition

As the competition operator, start the run, select a task, and start the task. Query hints are displayed to all viewers as configured once they are loaded (this may take a brief moment depending on the media type).

Viewers and participants see the message "Waiting for host to start task". If this persists, the operator can open the admin view and manually mark participants as ready.

See Run Management for more detail on operating a run.

Clone this wiki locally