# Modules

KVision consists of both required and optional functionality. Modules can be added as dependencies in `build.gradle.kts` file.&#x20;

All modules which include CSS stylesheets require explicit initialization. This also applies to the core module. This initialization ensures a predictable order in which all styles will be applied. The initialization is performed by adding dedicated module objects as parameters to the `startApplication()` function.

```kotlin
fun main() {
    startApplication(
        ::App,
        js("import.meta.webpackHot").unsafeCast<Hot?>(),
        BootstrapModule,
        BootstrapCssModule,
        FontAwesomeModule,
        TomSelectModule,
        DatetimeModule,
        BootstrapUploadModule,
        CoreModule
    )
}
```

{% hint style="info" %}
Some modules include more than one, optional initializers. E.g. `kvision-tabulator` module includes mandatory `TabulatorModule` but also `TabulatorCssBootstrapModule` , `TabulatorCssBulmaModule`, `TabulatorCssMaterializeModule`, `TabulatorCssMidnightModule`, `TabulatorCssModernModule`, `TabulatorCssSemanticModule`, `TabulatorCssSimpleModule` and `TabulatorCssStandardModule` for all CSS styles supported by the Tabulator component.
{% endhint %}

This is the current list of available modules.

| Module                                                                                                                          | Description                                                                                                                                                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| kvision                                                                                                                         | Core module required for all applications.                                                                                                                                                                                                                         |
| [kvision-bootstrap](https://kvision.gitbook.io/kvision-guide/3.-optional-ui-functionality-via-modules/bootstrap)                | <p>Bootstrap based components.</p><p>Can be omitted for applications, which use only the core functionality of the framework.</p><p><em>See</em> <a href="../2.-frontend-development-guide/themes"><em>Theming</em></a> <em>chapter for more information.</em></p> |
| kvision-tailwindcss                                                                                                             | [TailwindCSS](https://tailwindcss.com/) support.                                                                                                                                                                                                                   |
| kvision-bootstrap-upload                                                                                                        | Bootstrap based upload form component.                                                                                                                                                                                                                             |
| kvision-bootstrap-icons                                                                                                         | [Bootstrap Icons](https://icons.getbootstrap.com/) support.                                                                                                                                                                                                        |
| kvision-datetime                                                                                                                | Date and time picker form components.                                                                                                                                                                                                                              |
| kvision-tom-select                                                                                                              | Select and typeahead (autocomplete) components based on [Tom Select](https://tom-select.js.org/) library.                                                                                                                                                          |
| [kvision-fontawesome](https://kvision.gitbook.io/kvision-guide/2.-frontend-development-guide/icons-and-images)                  | [Font Awesome](https://fontawesome.com) support.                                                                                                                                                                                                                   |
| [kvision-handlebars](https://kvision.gitbook.io/kvision-guide/3.-optional-ui-functionality-via-modules/handlebars.js-templates) | [Handlebars.js](https://handlebarsjs.com/) templates support for text components.                                                                                                                                                                                  |
| [kvision-i18n](https://kvision.gitbook.io/kvision-guide/2.-frontend-development-guide/internationalization)                     | Internationalization support.                                                                                                                                                                                                                                      |
| kvision-imask                                                                                                                   | Text input mask support powered by [Imask.js](https://imask.js.org/)                                                                                                                                                                                               |
| kvision-richtext                                                                                                                | Rich text form component.                                                                                                                                                                                                                                          |
| kvision-chart                                                                                                                   | [Chart](https://kvision.gitbook.io/kvision-guide/3.-optional-ui-functionality-via-modules/charts) component.                                                                                                                                                       |
| [kvision-tabulator](https://kvision.gitbook.io/kvision-guide/3.-optional-ui-functionality-via-modules/tabulator-tables)         | [Tabulator](https://kvision.gitbook.io/kvision-guide/3.-optional-ui-functionality-via-modules/tabulator-tables) component.                                                                                                                                         |
| kvision-pace                                                                                                                    | [Pace](https://codebyzach.github.io/pace/) automatic page loader.                                                                                                                                                                                                  |
| kvision-ballast                                                                                                                 | Integration with [Ballast](https://copper-leaf.github.io/ballast/) state management framework                                                                                                                                                                      |
| [kvision-redux-kotlin](https://kvision.gitbook.io/kvision-guide/3.-optional-ui-functionality-via-modules/using-redux)           | <p><a href="https://reduxkotlin.org/">ReduxKotlin</a> state container.</p><p>See <a href="../3.-optional-ui-functionality-via-modules/using-redux">Using Redux</a> chapter for more information.</p>                                                               |
| [kvision-react](https://kvision.gitbook.io/kvision-guide/4.-integrating-with-javascript-libraries/using-react-components)       | Support for using React components in KVision applications.                                                                                                                                                                                                        |
| kvision-maps                                                                                                                    | <p>A basic module with the <code>Maps</code> component, based on <a href="https://leafletjs.com/">Leaflet</a> library. </p><p>PR welcomed!</p>                                                                                                                     |
| kvision-material                                                                                                                | [Material Web](https://github.com/material-components/material-web) based components.                                                                                                                                                                              |
| kvision-toastify                                                                                                                | Toast messages.                                                                                                                                                                                                                                                    |
| kvision-print                                                                                                                   | Printing support with [Print.js](https://printjs.crabbly.com/) library.                                                                                                                                                                                            |
| kvision-routing-navigo                                                                                                          | Routing module based on [Navigo 7](https://github.com/krasimir/navigo/blob/master/README_v7.md) library.                                                                                                                                                           |
| [kvision-routing-navigo-ng](https://kvision.gitbook.io/kvision-guide/3.-optional-ui-functionality-via-modules/js-routing)       | Routing module based on [Navigo 8+](https://github.com/krasimir/navigo) library.                                                                                                                                                                                   |
| kvision-routing-ballast                                                                                                         | Routing module based on [Ballast](https://copper-leaf.github.io/ballast/) framework.                                                                                                                                                                               |
| [kvision-jquery](https://kvision.gitbook.io/kvision-guide/3.-optional-ui-functionality-via-modules/jquery-bindings)             | [jQuery](https://jquery.com/) bindings, events and animations.                                                                                                                                                                                                     |
| [kvision-rest](https://kvision.gitbook.io/kvision-guide/3.-optional-ui-functionality-via-modules/using-rest-services)           | Configurable REST/HTTP client.                                                                                                                                                                                                                                     |
| [kvision-state](https://kvision.gitbook.io/kvision-guide/2.-frontend-development-guide/working-with-state)                      | State bindings and observable data structures.                                                                                                                                                                                                                     |
| kvision-state-flow                                                                                                              | Extensions for Kotlin coroutines `Flow`, `StateFlow` and `SharedFlow`.                                                                                                                                                                                             |
| kvision-signal                                                                                                                  | Integration with the [Signal](https://github.com/Fenrur/Signal) reactive state library                                                                                                                                                                             |
| [kvision-select-remote](https://kvision.gitbook.io/kvision-guide/5.-fullstack-development-guide/select-remote)                  | Select form component tailored for fullstack applications.                                                                                                                                                                                                         |
| kvision-tom-select-remote                                                                                                       | Select and typeahead (autocomplete) form components tailored for fullstack applications                                                                                                                                                                            |
| [kvision-tabulator-remote](https://kvision.gitbook.io/kvision-guide/5.-fullstack-development-guide/remote-tabulator)            | Tabulator component tailored for fullstack applications                                                                                                                                                                                                            |
| kvision-common-types                                                                                                            | KVision common types definitions.                                                                                                                                                                                                                                  |
| kvision-common-remote                                                                                                           | <p>KVision common module for fullstack applications, with remote services definitions.</p><p><em>See:</em> <a href="../5.-fullstack-development-guide">Full Stack Development Guide</a></p>                                                                        |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kvision.gitbook.io/kvision-guide/1.-getting-started-1/modules.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
