# 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,
        module.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/kvision-8.x/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-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/kvision-8.x/2.-frontend-development-guide/icons-and-images)                  | [Font Awesome](https://fontawesome.com) support.                                                                                                                                                                                                                   |
| [kvision-handlebars](https://kvision.gitbook.io/kvision-guide/kvision-8.x/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/kvision-8.x/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/kvision-8.x/3.-optional-ui-functionality-via-modules/charts) component.                                                                                                                                           |
| [kvision-tabulator](https://kvision.gitbook.io/kvision-guide/kvision-8.x/3.-optional-ui-functionality-via-modules/tabulator-tables)         | [Tabulator](https://kvision.gitbook.io/kvision-guide/kvision-8.x/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/kvision-8.x/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/kvision-8.x/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/kvision-8.x/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-onsenui](https://kvision.gitbook.io/kvision-guide/kvision-8.x/5.-targeting-non-web-platforms/onsen-ui-components)                  | [Onsen UI](https://onsen.io/) mobile web components.                                                                                                                                                                                                               |
| [kvision-jquery](https://kvision.gitbook.io/kvision-guide/kvision-8.x/3.-optional-ui-functionality-via-modules/jquery-bindings)             | [jQuery](https://jquery.com/) bindings, events and animations.                                                                                                                                                                                                     |
| [kvision-rest](https://kvision.gitbook.io/kvision-guide/kvision-8.x/3.-optional-ui-functionality-via-modules/using-rest-services)           | Configurable REST/HTTP client.                                                                                                                                                                                                                                     |
| [kvision-state](https://kvision.gitbook.io/kvision-guide/kvision-8.x/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-cordova](https://kvision.gitbook.io/kvision-guide/kvision-8.x/5.-targeting-non-web-platforms/building-with-apache-cordova)         | <p>Kotlin language bindings for Apache Cordova core API.</p><p>See <a href="../5.-targeting-non-web-platforms/building-with-apache-cordova">Building with Apache Cordova</a> chapter for more information.</p>                                                     |
| [kvision-electron](https://kvision.gitbook.io/kvision-guide/kvision-8.x/5.-targeting-non-web-platforms/building-with-electron)              | <p>Kotlin language bindings for Electron API.</p><p><em>See</em> <a href="../5.-targeting-non-web-platforms/building-with-electron"><em>Building with Electron</em></a> <em>chapter for more information.</em></p>                                                 |
| [kvision-select-remote](https://kvision.gitbook.io/kvision-guide/kvision-8.x/7.-full-stack-components/select-remote)                        | Select form component tailored for full-stack applications.                                                                                                                                                                                                        |
| kvision-tom-select-remote                                                                                                                   | Select and typeahead (autocomplete) form components tailored for full-stack applications.                                                                                                                                                                          |
| [kvision-tabulator-remote](https://kvision.gitbook.io/kvision-guide/kvision-8.x/7.-full-stack-components/remote-tabulator)                  | Tabulator component tailored for full-stack applications.                                                                                                                                                                                                          |
| kvision-common-annotations                                                                                                                  | <p>Compiler plugin annotations for full-stack applications.<br><em>See:</em> <a href="../6.-full-stack-development-guide">Full Stack Development Guide</a><em>​</em></p>                                                                                           |
| kvision-common-types                                                                                                                        | <p>KVision common module for full-stack applications, with types definitions.</p><p><em>See:</em> <a href="../6.-full-stack-development-guide">Full Stack Development Guide</a><em>​</em></p>                                                                      |
| kvision-common-remote                                                                                                                       | <p>KVision common module for full-stack applications, with remote services definitions.</p><p><em>See:</em> <a href="../6.-full-stack-development-guide">Full Stack Development Guide</a></p>                                                                      |
| kvision-server-ktor                                                                                                                         | <p><a href="https://ktor.io/">Ktor</a> server-side connectivity module for full-stack applications.</p><p><em>See:</em> <a href="../6.-full-stack-development-guide">Full Stack Development Guide</a></p>                                                          |
| kvision-server-ktor-koin                                                                                                                    | <p><a href="https://ktor.io/">Ktor</a> with <a href="https://insert-koin.io/">Koin</a> server-side connectivity module for full-stack applications.</p><p><em>See:</em> <a href="../6.-full-stack-development-guide">Full Stack Development Guide</a></p>          |
| kvision-server-jooby                                                                                                                        | <p><a href="https://jooby.io">Jooby</a> server-side connectivity module for full-stack applications.</p><p><em>See:</em> <a href="../6.-full-stack-development-guide">Full Stack Development Guide</a></p>                                                         |
| kvision-server-spring-boot                                                                                                                  | <p><a href="https://spring.io/projects/spring-boot">Spring Boot</a> server-side connectivity module for full-stack applications.</p><p><em>See:</em> <a href="../6.-full-stack-development-guide">Full Stack Development Guide</a></p>                             |
| kvision-server-javalin                                                                                                                      | <p><a href="https://javalin.io">Javalin</a> server-side connectivity module for full-stack applications.</p><p><em>See:</em> <a href="../6.-full-stack-development-guide">Full Stack Development Guide</a></p>                                                     |
| kvision-server-vertx                                                                                                                        | <p><a href="https://vertx.io">Vert.x</a> server-side connectivity module for full-stack applications.</p><p><em>See:</em> <a href="../6.-full-stack-development-guide">Full Stack Development Guide</a></p>                                                        |
| kvision-server-micronaut                                                                                                                    | <p><a href="https://micronaut.io">Micronaut</a> server-side connectivity module for full-stack applications.</p><p><em>See:</em> <a href="../6.-full-stack-development-guide">Full Stack Development Guide</a></p>                                                 |
