# Simple build-time configuring Zonemaster-GUI using "config.ts" The `config.ts` configuration file can be used for *build-time* settings of the Zonemaster-GUI. Any changes to this file require a rebuild of the installation package. ## Finding "config.ts" In the source tree the file is found as `config.ts` relative to the root of the Git tree. The installed GUI does not ship with this file, because the values defined in this file are baked in the GUI’s HTML and JavaScript files. ## Rebuilding Zonemaster-GUI after update When `config.ts` is updated, Zonemaster-GUI has to be rebuilt. See [Build a custom Zonemaster-GUI installation package] for how to get the source tree and building a custom installation package. ## Default "config.ts" file The `config.ts` file is the central configuration file for the Zonemaster-GUI application. It defines various settings that control the behavior and appearance of the application. ```typescript import type { Config } from '@/types.ts'; import packageJson from './package.json'; const config: Config = { defaultLanguage: 'en', enabledLanguages: ['da', 'en', 'es', 'fi', 'fr', 'nb', 'sv', 'sl'], baseUrl: import.meta.env.PUBLIC_BASE_URL || '/', apiBaseUrl: import.meta.env.PUBLIC_API_URL || '/api', pollingInterval: import.meta.env.PUBLIC_POLLING_INTERVAL || 5000, clientInfo: { version: packageJson.version, id: 'Zonemaster-GUI', }, siteInfo: { email: 'contact@zonemaster.net', siteName: '', }, setTitle(title: string) { return `${title} – Zonemaster`; } }; export default config; ``` ## "config.ts" configuration options * **defaultLanguage**: The default language to use when no language is specified. * The default language must be one of the enabled languages. * The default value is "en". * If this option is updated see [Updating Apache configuration] for required matching update of the Apache configuration. * **enabledLanguages**: An array of language codes that are supported by the application. * The array should match the list of language codes in the [Locale setting] in the Backend configuration. * The array must only include language codes also included in `project.inlang/settings.json`, but it may be fewer. To add new languages, see [Translating Zonemaster-GUI]. `project.inlang/settings.json` must only be updated in that process. * **baseUrl**: The base path Zonemaster-GUI is served on. By default it is "/". * For example, if Zonemaster-GUI is served at `http://domaintest.xa/zonemaster`, instead of just `http://domaintest.xa/`, then this option must be set to `/zonemaster`. * If this option is updated see [Updating Apache configuration] for required matching update of the Apache configuration. * **apiBaseUrl**: The base URL for API requests. The default value is `/api` and must be kept so if `baseUrl` has its default value. * If `baseUrl` is updated, then this option must also be updated so that this option is equal to `baseUrl` + '/api', i.e. '/zonemaster/api' in the example above. * **pollingInterval**: The interval (in milliseconds) for polling the API. This is taken from the `PUBLIC_POLLING_INTERVAL` environment variable (default empty) or defaults to 5000 ms. * **clientInfo**: Information about the client application. These details are included in every API request to start tests as (spoofable) indications of origin. Both are best left as default. * **version**: The version of the application, taken from package.json. * **id**: The identifier for the client application. * **siteInfo**: Information about the site. * **email**: The contact email address. To be set in the footer in a mailto URL, if non-empty. - **siteName**: The name of the site. To be set in the header if non-empty. ## Updating Apache configuration Preferably do the updates to the `zonemaster.conf-example` file before building the installation package. If done so the normal installation instruction can be followed using the custom installation package. ### Finding "zonemaster.conf-example" In the source tree the file is found as `zonemaster.conf-example` relative to the root of the Git tree. It is included in the installation package and is installed as `zonemaster.conf` in a default installation. ### defaultLanguage If `defaultLanguage` has been updated in `config.ts` the "DEFAULT_LANGUAGE" variable must be updated in `zonemaster.conf-example`. The same language code must be used. ### baseUrl If `baseUrl` has been set to a non-default value in `config.ts` the "BASE_URL" variable must be defined with the same value. By default the variable is undefined (`baseUrl` equal to "/"). [Build a custom Zonemaster-GUI installation package]: building-custom-gui.md [Locale setting]: ../backend.md#locale [Translating Zonemaster-GUI]: ../../translation/Translating-GUI.md [Updating Apache configuration]: #updating-apache-configuration