# Home

## Vostok.Configuration in a nutshell

Vostok.Configuration is a [set](https://vostok.gitbook.io/configuration/modules) of libraries offering configuration tools to .NET applications. It handles fetching configuration data from files or APIs, parsing and converting it to user-defined model classes.

## Guiding design principles

* **Configuration data sources should be composable regardless of storage formats**.

  * It should be easy to combine settings from JSON files, environment variables and custom APIs. This is achieved with [configuration source](https://vostok.gitbook.io/configuration/concepts-and-basics/configuration-sources) concept and universal [settings nodes](https://vostok.gitbook.io/configuration/concepts-and-basics/settings-nodes) abstraction.&#x20;

* **"Hot" configuration updates should be easy to leverage**.&#x20;

  * Hot configuration implies handling changes in settings without application restart. This is enabled by explicitly reactive [source](https://vostok.gitbook.io/configuration/concepts-and-basics/configuration-sources) design and [settings provider methods](https://vostok.gitbook.io/configuration/concepts-and-basics/configuration-provider).

* **Rich object models should be supported for user convenience**.

  * [Binding](https://vostok.gitbook.io/configuration/concepts-and-basics/binding-nodes-to-models) process supports a wide range of [primitives](https://vostok.gitbook.io/configuration/binding/primitives), [collections](https://vostok.gitbook.io/configuration/binding/collections), [classes](https://vostok.gitbook.io/configuration/binding/classes-and-structs), [interfaces](https://vostok.gitbook.io/configuration/advanced-scenarios/use-dynamic-interfaces) and employs a number of conventions for arbitrary types (anything with a `TryParse` method works).

* **It should be possible to extend the library with arbitrary data sources and object models**.

  * Two major extensions points are [custom configuration sources](https://vostok.gitbook.io/configuration/advanced-scenarios/create-custom-sources) and [binders](https://vostok.gitbook.io/configuration/advanced-scenarios/apply-custom-binders).

## Features

* [On-demand](https://vostok.gitbook.io/configuration/basic-scenarios/obtain-settings-from-provider) and [subscription-based](https://vostok.gitbook.io/configuration/basic-scenarios/observe-settings-via-provider) methods to obtain settings;

* Support for [required](https://vostok.gitbook.io/configuration/basic-scenarios/make-settings-required) and [secret](https://vostok.gitbook.io/configuration/basic-scenarios/make-settings-secret) settings;

* Support for custom settings [validation](https://vostok.gitbook.io/configuration/advanced-scenarios/apply-custom-validators);

* Wide selection of [built-in sources](https://vostok.gitbook.io/configuration/sources);

* Composable [binders](https://vostok.gitbook.io/configuration/concepts-and-basics/binding-nodes-to-models);

* Sources can be [combined](https://vostok.gitbook.io/configuration/basic-scenarios/combine-sources), [navigated](https://vostok.gitbook.io/configuration/basic-scenarios/scope-sources) and [transformed](https://vostok.gitbook.io/configuration/advanced-scenarios/transform-sources);

* [Integration](https://vostok.gitbook.io/configuration/broken-reference) with Microsoft configuration system;

## Guarantees

See [obtain](https://vostok.gitbook.io/configuration/basic-scenarios/obtain-settings-from-provider) / [observe](https://vostok.gitbook.io/configuration/basic-scenarios/observe-settings-via-provider) settings scenarios, [caching](https://vostok.gitbook.io/configuration/concepts-and-basics/caching-and-performance) and [error handling](https://vostok.gitbook.io/configuration/concepts-and-basics/error-handling) sections for details.

## Good starting points

{% content-ref url="quickstart" %}
[quickstart](https://vostok.gitbook.io/configuration/quickstart)
{% endcontent-ref %}

{% content-ref url="concepts-and-basics" %}
[concepts-and-basics](https://vostok.gitbook.io/configuration/concepts-and-basics)
{% endcontent-ref %}

{% content-ref url="basic-scenarios" %}
[basic-scenarios](https://vostok.gitbook.io/configuration/basic-scenarios)
{% endcontent-ref %}

{% content-ref url="modules" %}
[modules](https://vostok.gitbook.io/configuration/modules)
{% endcontent-ref %}
