Concepts

Projects and versions

The building blocks of Veresk and how versions inherit files from each other.

The model

EntityWhat it is
ProjectThe top-level container. Has a name, an alias, an owner and its own CDN location.
VersionA named snapshot line of the project's files, such as default or staging.
FileA config file: json, lua, txt, css or scss.
ConsumerA client that receives configs (a game build, a backend service).
TagA free-form label for grouping and filtering files.
BundleA named set of files delivered together. Membership is set per version.

Projects are created in the Veresk web interface. Versions, files, tags and publishing are also available through the REST API and MCP. Consumers, bundles, encryption and Git are managed in the interface.

Versions form a chain

Every project has a root version named default. A new version is created from a parent (the default version when you do not choose one) and inherits every file from it.

  • A version without its own copy of a file serves the parent's content.
  • When you edit the file in the version, that version gets its own copy and stops inheriting that file. Other files keep inheriting.
  • You can reset a file to inherit from the parent again.
default      settings.json   prices.json   events.lua
  └─ staging settings.json*  (inherits prices.json, events.lua)
       └─ season-5  events.lua*  (inherits the rest from staging)

* marks a file with its own copy in that version.

This makes small changes cheap: create staging, edit one file and publish, without duplicating the whole project.

Locking

A version can be locked. A locked version is read-only: files cannot be edited. Use it to freeze what you have released.

Comparing and promoting

You can compare two versions file by file. Each file is same, different, or present on one side only. You can then copy chosen files from one version to another, for example to promote tested changes from staging to default.

Consumers

A consumer decides which files a client receives. A file reaches a consumer only when the file is assigned to it. Clients address themselves by consumer name, so backend and game-client can receive different sets of files from the same version.

Tags

Tags help you find files in a long list. Files created or changed through the API get the tags api-created and api-edited automatically, so you can review what automation touched.