Giter VIP home page Giter VIP logo

kvision's Introduction

KVision Logo

KVision

Object oriented web framework for Kotlin/JS.

Travis CI Download License: MIT Chat: on slack

Easy

KVision allows you to build modern web applications with the Kotlin language, without any use of HTML, CSS or JavaScript.

Rich

It gives you a hierarchy of almost 100 ready to use GUI components, which can be used as a builder blocks for the application UI. Hundreds of features are available with easy to learn and consistent API.

Flexible

KVision fully supports both reactive and imperative programming models. It gives you everything you may need for the state management of your apps. From simple observables to advanced redux stores. From simple event callbacks to functional event flows.

Fullstack

KVision contains innovative connectivity interface for Ktor, Jooby, Spring Boot, Javalin, Vert.x and Micronaut frameworks on the server side, which allows to build fullstack applications with shared code for data model and business logic.

Familiar

KVision's basic design is quite similar to many non-web UI programming libraries including Swing, JavaFX, QT, WinForms and Flutter.

Verified

KVision applications are already running on production websites used by hundreds of users every day. Visit these example sites to see it in action:

Growing

KVision is being actively developed. Please create an issue for any bugs or feature requests.

Features

Examples and documentation

Ready to explore, rich set of KVision examples is available in the separate project.

See also the complete frontend implementation of RealWorld example application and a fullstack version built with Spring Webflux and R2DBC.

The comprehensive KVision guide is published on GitBook.

Since version 3.13.0 the API documentation, generated with new Dokka 1.4, is available at https://rjaros.github.io/kvision/kvision/index.html.

Older API documentation is still available at https://rjaros.github.io/kvision/api/.

You can also look at KVision blog posts at dev.to and you can talk with KVision developers on Kotlin Slack #kvision channel.

If you are interested in the documentation for KVision 1.x (based on Bootstrap 3), you can find the guide here and the API docs here.

Quickstart

Development

  1. Download KVision examples from GitHub:

     git clone https://github.com/rjaros/kvision-examples.git
    
  2. Enter one of the examples directory:

     cd kvision-examples/showcase                        (on Linux)
     cd kvision-examples\showcase                        (on Windows)
    
  3. Run Gradle incremental build with:

     ./gradlew -t run                                    (on Linux)
     gradlew.bat -t run                                  (on Windows)
    
  4. Open http://localhost:3000/ in your browser.

  5. Play with the code and see your changes immediately in the browser.

Production

To build complete application optimized for production run:

    ./gradlew zip                       (on Linux)
    gradlew.bat zip                     (on Windows)

Application package will be saved as build/libs/showcase-1.0.0-SNAPSHOT.zip.

Code samples

Hello world

        root("root") {
            span("Hello world!")
        }

Basic components interactions using type safe DSL builders

        root("root") {
            hPanel(spacing = 20, alignItems = FlexAlignItems.CENTER) {
                val label = span("Not yet clicked.")
                var count = 0
                button("Click me").onClick {
                    label.content = "You clicked the button ${++count} times."
                }
            }
        }

Tab panel with JavaScript routing

        val firstPanel = Div("First")
        val secondPanel = Div("Second")
        val thirdPanel = Div("Third")

        root("root") {
            tabPanel {
                addTab("First", firstPanel, route = "/first")
                addTab("Second", secondPanel, route = "/second")
                addTab("Third", thirdPanel, route = "/third")
            }
        }

Type safe forms

        @Serializable
        data class Model(val username: String? = null, val password: String? = null)

        root("root") {
            formPanel {
                add(Model::username, Text(label = "Username"), required = true)
                add(Model::password, Password(label = "Password"), required = true)
                add(Button("OK").onClick {
                    val data: Model = this@FormPanel.getData()
                    println("Username: ${data.username}")
                    println("Password: ${data.password}")
                })
            }
        }

State management

        root("root") {
            vPanel(spacing = 10) {
                val state = ObservableValue("Hello world")
                div(state) {
                    +it
                }
                button("Add dot").onClick {
                    state.value += "."
                }
            }
        }

kvision's People

Contributors

rjaros avatar robert-cronin avatar joerg-rade avatar mpetuska avatar bmalkow avatar ersin-ertan avatar kormik avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.