A lightweight Kotlin web framework for backend developers 🦆

Overview
Comments
  • FileReader API Support ?

    FileReader API Support ?

    I was wondering if the FileReader Web API support is possible in such a way that we can, bind a function to the FileReader Load event and get a response in a KVar, to eliminate the need to listen to the event using javascript which then doesn't return anything, and limits us to do our work in there. which unbinds my img element from KVar binded to its 'src' attribute. @sanity referred to the relevant code to make something to support it, but I couldn't get my head around it, any example or help ?

    enhancement 
    opened by DineshSolanki 20
  • `render()` should not use a <span> to contain rendered elements

    `render()` should not use a to contain rendered elements

    The render() function internally uses span as it's container element. Removing it would be a god send, but I don't think there is an easy way to do this so what we can do instead is provide a way for user to give it some custom element as container.

    The problem I've stumbled upon goes like this. I want to create dynamically filled dropdown using fomantic. So I did this:

    val areaId = KVar("")
    div(fomantic.ui.search.selection.dropdown).new {
      input(type = InputType.hidden).setValue(areaId, updateOn = "change")
      i(fomantic.dropdown.icon)
      div(fomantic.menu).new {
        render(state.listAreas()) { areas ->
          areas.forEach { area -> div(fomatnic.item).setAttributeRaw("data-value", area.id).text(area.name)
        }
      }
    }
    

    This works, but because of the span it doesn't look right (styling is wrong). So instead I think we could do this:

    val areaId = KVar("")
    div(fomantic.ui.search.selection.dropdown).new {
      input(type = InputType.hidden).setValue(areaId, updateOn = "change")
      i(fomantic.dropdown.icon)
      render(stat.listAreas(), container = div(fomantic.menu)) { areas ->
        areas.forEach { area -> div(fomatnic.item).setAttributeRaw("data-value", area.id).text(area.name)
      }
    }
    

    Tell me what do you think.

    enhancement architecture 1.0-blocker 
    opened by marad 20
  • Automatic path-to-object serialization/deserialization

    Automatic path-to-object serialization/deserialization

    Note: While it will require a decent understanding of Kotlin reflection, this is a very self-contained project and thus might be an ideal choice for someone interested in getting their feet wet as a Kweb contributor. If you want to tackle it please comment below to avoid duplicated effort

    I've been working on routing, and have an approach that's both relatively simple and I think very powerful.

    One thing that would add greatly to it is some code that could convert a URL path like /users/123/friends/94 into an object representation of the path, like Users(id=123, Friend(id = 94)), similar to how Gson converts JSON into object representations and back again.

    For example, let's create an object representation of our webapps paths as follows:

    sealed class Entity {
      data class User(val id : Int, val userEntity : UserEntity) : Entity()
      class Root() : Entity()
    }
    
    sealed class UserEntity {
      class Root() : UserEntity()
      data class Friend(val id : Int) : UserEntity()
      class Settings() : UserEntity()
    }
    

    Note the use of sealed classes, this will be nice when we use when expressions to render the paths.

    Here are some paths and the object equivalents:

    /users/32 -> Entity.User(32, UserEntity.Root()) /users/152/friends/22 -> Entity.User(152, UserEntity.Friend(22)) / -> Entity.Root()

    Additionally, while defaults should be sensible and consistent with REST conventions for URL format, it should be possible to use annotations to override the default translations from path to object (much as with Gson).

    opened by sanity 19
  • Add onReceiver to a doc

    Add onReceiver to a doc

    There are specific events that can be tracked only on the document, but it's api doesn't allow listening for events.

    For example this event only works when installed on the document: https://developer.mozilla.org/en-US/docs/Web/API/Document/selectionchange_event

    Here are all events supported by the document: https://developer.mozilla.org/en-US/docs/Web/API/Document#Events

    enhancement 
    opened by marad 18
  • onImmediate restrictions

    onImmediate restrictions

    Hello,

    this is my first post on kweb-core. I'm quite excited about the idea of merging server- and client-side programming.

    I tested your TODO-example where I saw that the websocket gets quite verbose when filling the input text field, caused by the input.on.keypress event handler code:

    input.on.keypress { ke ->
        if (ke.code == "Enter") {
            //etc.
    

    Woudn't that be a case for onImmediate, I first thought. As I read on issue #35 , onImmediate works with pre-recording DOM-changes. As you say in the docs, "the event handler for an onImmediate must limit itself to simple DOM modifications".

    • Do I suppose correctly that even a simple IF statement like above cannot be used in onImmediate because of its nature to just record the effects when executed once on the server side? You should include this in your warning in the docs.

    • If positive, is there no other way of offering a better onImmediate experience, for example

      • writing a Kotlin compiler plugin that is triggered on compiling the "onImmediate" method calls, and compiles the onImmediate callback function parameters to a javascript file that gets included into the website, or
      • let the programmers put the onImmediate callbacks in a separate Kotlin compile unit that gets compiled into JavaScript code? But there must be some magic such that the onImmediate method does not execute the callback but now has to add the right function pointer into the javascript event call. Advantage: The IDE could then better restrict the functions that are allowed to be called. Disadvantage: Separation for the programmer between Kotlin HTML generation and onImmediate callbacks into different compile units.
    question efficiency stale 
    opened by fjf2002 18
  • Toggling visibility/rendering

    Toggling visibility/rendering

    Hi, just wondering if there is an example of toggling visibility of views, or maybe removing them all together.

    Basically I want something like dropdown menu with dynamically generated elements tied to shoebox, but I'm not sure how to do it properly.

    opened by ATizik 18
  • Inlined svg

    Inlined svg "disappearing" when re-rendered

    Describe the bug https://www.loom.com/share/34e19d5b30ff4212a1318fa296be7d8b

    To Reproduce the svg disappears only when I re-render a component, not at the initial rendering

    bug 
    opened by geomagilles 17
  • Work on phase one of resolving issue 53. Add 2 instruction types to K…

    Work on phase one of resolving issue 53. Add 2 instruction types to K…

    I think this is a workable implementation to get started with this issue.

    There's also a syntax detail we will need to make a decision on. If you look at CacheJSTest.kt you will see browser.executeFromCache("""alert("Hello " + {});""","Derek")

    The syntax you put in the issue description, won't work. Not without some modifications at least. browser.executeFromCache("""alert("Hello {}");""","Derek")

    That doesn't work, because right now, I'm just swapping out appearance of "{}" for randomly generated variable names. But, with the syntax written that way, inside the quote marks, javascript won't recognize the variable name.

    So, Kweb users will need to treat "{}" as variable names and format their strings correctly, i.e., alert("Hello" + {}), or we will need to add some complexity and "break out" variables. We could parse "Hello {}, how are you?", and change it into "Hello " + variableName + ", how are you?" But, that's more complex then the basic code I wrote to substitute the "{}" so far.

    opened by Derek52 17
  • KVar not binding if Element ID is changed

    KVar not binding if Element ID is changed

    I tried to bind variable of type KVar, but it is not binding to the "src" attribute -

    var imageString: KVar<String> = KVar("") img("").setAttribute("src", imageString) I also tried -

    val imgElement =img("")
    imgElement.setAttribute("src", imageString)
    

    But to no avail. the value of imageString doesn't affect the src attribute. not even one directional

    I also read the doc about img, and it said, "Kweb doesn't support internal routing yet, use external source". does that mean what I'm trying to achieve is not possible ?

    bug 
    opened by DineshSolanki 17
  • Support modifying multiple parts of a URL at once, such as path and query string

    Support modifying multiple parts of a URL at once, such as path and query string

    How would that work with query parameters?

    I also did not find a convenient way to retrieve query parametes. I ended up with:

    fun WebBrowser.queryParameters() =
        parseQueryString(httpRequestInfo.requestedUrl.substringAfter("?").substringAfter("%3F"))
    

    However, I was not able to modify the url such that it "hit" the route on the server.

    enhancement question 
    opened by StefanLiebig 17
  • Since 0.10.6, programatic links do not work anymore

    Since 0.10.6, programatic links do not work anymore

    Describe the bug This code :

         val a = a().setAttribute("href", "#")
             
           a.on.click {
                println("clicked")
            }
    

    works (display "clicked" when clicking on the a element) for 0.10.5 - not anymore for 0.10.6 (seems to route to # instead)

    bug 
    opened by geomagilles 15
  • Can't remove/replace viewport meta

    Can't remove/replace viewport meta "K_head"

    Hello, I have a strange behavior in which I set my custom head viewport meta but there still is the default tag with id="K_head" (see screenshot below)

    My configuration

    fun main() {
        Kweb(
            port = 8080,
            debug = false,
            plugins = listOf(
                StaticFilesPlugin(ResourceFolder("static"), "/static"),
                ViewportPlugin(),
                fomanticUIPlugin
            )
        ) {
            doc.head.new {
                // other head tags
                // I tried adding my meta here also, nothing changes
            }
            doc.body.new {
                // routing
            }
        }
    }
    

    Screenshot

    meta_k_head

    Is this behavior normal?

    bug stale 
    opened by alexpopa95 9
  • Session hijacking risk over unencrypted transports

    Session hijacking risk over unencrypted transports

    There is a risk of session hijacking because client ids are transmitted in plaintext over unencrypted transports while being used to authenticate reconnection in the event of a disconnect.

    security 
    opened by sanity 3
  • Document what happens to session state on a server restart

    Document what happens to session state on a server restart

    I want to know the spec of the restarting process. Kweb handles the state on the server side, as a result, I want to know what's happing in the server restarting process for deployment on the production environment.

    If my understanding is correct, Kweb clears the client state, and clear the input form on the browser after server restarting, right?

    architecture documentation reliability stale 
    opened by tokuhirom 9
  • Minimize JavaScript

    Minimize JavaScript

    If not in Kweb.debug mode, use a JavaScript minimizer like YUI Compressor to compress kweb_bootstrap.js, probably somewhere here.

    Note that the various placeholders must survive the minimization, so using commented code for placeholders will probably need to change.

    enhancement efficiency good-for-beginners 
    opened by sanity 2
Releases(1.3.4)
  • 1.3.4(Dec 26, 2022)

    What's Changed

    • Fix typo by @Irian3x3 in https://github.com/kwebio/kweb-core/pull/421
    • Make value synchronization more robust and fix bug by @sanity in https://github.com/kwebio/kweb-core/pull/422

    New Contributors

    • @Irian3x3 made their first contribution in https://github.com/kwebio/kweb-core/pull/421

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.3.3...1.3.4

    Source code(tar.gz)
    Source code(zip)
  • 1.3.3(Dec 25, 2022)

    What's Changed

    • Add a preventDefault param to AElements that controls href behavior by @alkoclick in https://github.com/kwebio/kweb-core/pull/419

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.3.2...1.3.3

    Source code(tar.gz)
    Source code(zip)
  • 1.3.2(Dec 23, 2022)

    What's Changed

    • Bump selenium-java from 4.7.0 to 4.7.2 by @dependabot in https://github.com/kwebio/kweb-core/pull/414
    • Bump selenium-chrome-driver from 4.7.0 to 4.7.2 by @dependabot in https://github.com/kwebio/kweb-core/pull/415
    • Fix "Received event callback with JsonNull" warning by adding a value the callback can read by @alkoclick in https://github.com/kwebio/kweb-core/pull/417
    • ValueElement.value wasn't propagating KVar changes from server to browser by @sanity in https://github.com/kwebio/kweb-core/pull/418

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.3.1...1.3.2

    Source code(tar.gz)
    Source code(zip)
  • 1.3.1(Dec 10, 2022)

    What's Changed

    • Bump ktor-server-caching-headers from 2.1.3 to 2.2.1 by @dependabot in https://github.com/kwebio/kweb-core/pull/406
    • Upgrade Ktor to version 2.2.1 by @sanity in https://github.com/kwebio/kweb-core/pull/411
    • remove shadow plugin, not needed by @sanity in https://github.com/kwebio/kweb-core/pull/412
    • deprecate viewport plugin, replace with extension function by @sanity in https://github.com/kwebio/kweb-core/pull/413

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.3.0...1.3.1

    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Dec 4, 2022)

    We have fixed a minor bug in Kweb where a meta tag was hardwired into all HTML documents. This meta tag should have been user-configurable, either through the DSL or the ViewportPlugin. The meta tag has now been removed.

    This is what it was adding:

    <head>
      ...
      <meta id="K_head" 
               name="viewport" 
               content="width=device-width, initial-scale=1.0">
      ...
    </head>
    

    This change should not have any effect on your website, as the values in the meta tag were the default values anyway.

    However, if you do notice any adverse effects of the change you can use the ViewportPlugin with its default settings to add the meta tag back.

    To do this use the following code:

    import kweb.plugins.viewport.ViewportPlugin
    
    Kweb(port = 1235, plugins = listOf(ViewportPlugin())) { // ...
    
    Source code(tar.gz)
    Source code(zip)
  • 1.2.2(Dec 3, 2022)

    Changing the visibility of Kweb.clientState was the purpose of the previous release but seems like I screwed up the git push. This should really fix it.

    What's Changed

    • Bump selenium-java from 4.6.0 to 4.7.0 by @dependabot in https://github.com/kwebio/kweb-core/pull/400
    • Bump kotlin-gradle-plugin from 1.7.21 to 1.7.22 by @dependabot in https://github.com/kwebio/kweb-core/pull/402
    • Bump selenium-chrome-driver from 4.6.0 to 4.7.0 by @dependabot in https://github.com/kwebio/kweb-core/pull/401

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.2.1...1.2.2

    Source code(tar.gz)
    Source code(zip)
  • 1.2.1(Dec 2, 2022)

    What's Changed

    • doc fix typo by @sunyuyangg555 in https://github.com/kwebio/kweb-core/pull/398
    • make Kweb.clientState public again per #399

    New Contributors

    • @sunyuyangg555 made their first contribution in https://github.com/kwebio/kweb-core/pull/398

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.2.0...1.2.1

    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Nov 25, 2022)

    Thanks to @sigmadeltasoftware for suggesting a more concise syntax for components, the old Component interface has been deprecated. See Components in the user manual.

    What's Changed

    • Add CSSPlugin which enables the usage of custom CSS files by @Cyneath in https://github.com/kwebio/kweb-core/pull/395
    • Changed Component class into ElementCreator typealias by @sigmadeltasoftware in https://github.com/kwebio/kweb-core/pull/397

    New Contributors

    • @sigmadeltasoftware made their first contribution in https://github.com/kwebio/kweb-core/pull/397

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.1.6...1.2.0

    Source code(tar.gz)
    Source code(zip)
  • 1.1.6(Nov 20, 2022)

    What's Changed

    • Bump com.github.ben-manes.versions from 0.43.0 to 0.44.0 by @dependabot in https://github.com/kwebio/kweb-core/pull/388
    • remove old code by @sanity in https://github.com/kwebio/kweb-core/pull/387
    • Bump logback-classic from 1.4.4 to 1.4.5 by @dependabot in https://github.com/kwebio/kweb-core/pull/393

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.1.5...1.1.6

    Source code(tar.gz)
    Source code(zip)
  • 1.1.5(Nov 12, 2022)

    What's Changed

    • Add initialValue support for select and textarea by @tokuhirom in https://github.com/kwebio/kweb-core/pull/382

    New Contributors

    • @tokuhirom made their first contribution in https://github.com/kwebio/kweb-core/pull/382

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.1.4...1.1.5

    Source code(tar.gz)
    Source code(zip)
  • 1.1.4(Nov 11, 2022)

    What's Changed

    • fix #include of KVar input binding example by @Cyneath in https://github.com/kwebio/kweb-core/pull/378
    • Fix example in style.md by @AndrewCrowe in https://github.com/kwebio/kweb-core/pull/379
    • ObservableList.listIterator() should disallow list modifications through MutableIterator by @sanity in https://github.com/kwebio/kweb-core/pull/386

    New Contributors

    • @AndrewCrowe made their first contribution in https://github.com/kwebio/kweb-core/pull/379

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.1.3...1.1.4

    Source code(tar.gz)
    Source code(zip)
  • 1.1.3(Nov 6, 2022)

    What's Changed

    • Bump selenium-java from 4.5.3 to 4.6.0 by @dependabot in https://github.com/kwebio/kweb-core/pull/372
    • Bump kotlin-logging from 3.0.2 to 3.0.4 by @dependabot in https://github.com/kwebio/kweb-core/pull/374
    • Bump kotest-bom from 5.5.3 to 5.5.4 by @dependabot in https://github.com/kwebio/kweb-core/pull/375
    • Bump selenium-jupiter from 4.3.1 to 4.3.2 by @dependabot in https://github.com/kwebio/kweb-core/pull/373
    • Bump selenium-chrome-driver from 4.5.3 to 4.6.0 by @dependabot in https://github.com/kwebio/kweb-core/pull/376
    • add urlPathPrefix configuration parameter by @sanity in https://github.com/kwebio/kweb-core/pull/377
    • WebSocket callback listen path changed from /ws to /kweb_ws to avoid collisions

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.1.2.1...1.1.3

    Source code(tar.gz)
    Source code(zip)
  • 1.1.2(Nov 4, 2022)

    What's Changed

    • make components both simpler and more powerful by @sanity in https://github.com/kwebio/kweb-core/pull/370

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.1.1...1.1.2

    Source code(tar.gz)
    Source code(zip)
  • 1.1.1(Oct 31, 2022)

    Provide ElementCreator.elementScope() to create CoroutineScopes that are canceled when the relevant part of the DOM is no-longer used.

    What's Changed

    • JavaScript interop chapter ready for merge by @sanity in https://github.com/kwebio/kweb-core/pull/367

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.1.0...1.1.1

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Oct 31, 2022)

    This release changes how Elements are configured on creation. Old approach:

    button {
       element {
          classes("bigbutton")
          this["autofocus"] = true
          text("Click Me!")
       }
    }
    

    New approach:

    button { btnEl ->
        with(btnEl) {
            classes("bigbutton")
            this["autofocus"] = true
            text("Click Me!")
        }
    }
    

    The element { } block is now deprecated in favor of this approach.

    What's Changed

    • New approach to configuring elements by @sanity in https://github.com/kwebio/kweb-core/pull/366

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.0.2.1...1.1.0

    Source code(tar.gz)
    Source code(zip)
  • 1.0.2.1(Oct 31, 2022)

    • Use /kweb_static instead of /static for static files to avoid collisions since /static is commonly used
    • Improve DSL for custom elements

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.0.2...1.0.2.1

    Source code(tar.gz)
    Source code(zip)
  • 1.0.2(Oct 29, 2022)

    Composable components help manage complexity in a software project by allowing developers to break down a complex problem into smaller, more manageable pieces. Kweb's new Component interface is a simple but powerful abstraction to create reusable UI components in Kweb.

    We also have new ways to create KVars and KVals from within the DOM builder DSL that are more resource efficient, see the new KVars and the DOM section in the Kweb Book.

    For more read the new Kweb book chapter: Managing Complexity

    What's Changed

    • Bump selenium-chrome-driver from 4.5.2 to 4.5.3 by @dependabot in https://github.com/kwebio/kweb-core/pull/352
    • Bump kotest-bom from 5.5.1 to 5.5.2 by @dependabot in https://github.com/kwebio/kweb-core/pull/353
    • Bump selenium-java from 4.5.2 to 4.5.3 by @dependabot in https://github.com/kwebio/kweb-core/pull/351
    • Bump org.jetbrains.kotlinx.binary-compatibility-validator from 0.12.0 to 0.12.1 by @dependabot in https://github.com/kwebio/kweb-core/pull/355
    • Bump ktor-server-jetty from 2.1.2 to 2.1.3 by @dependabot in https://github.com/kwebio/kweb-core/pull/357
    • Bump kotest-bom from 5.5.2 to 5.5.3 by @dependabot in https://github.com/kwebio/kweb-core/pull/356
    • Bump ktor-server-caching-headers from 2.1.2 to 2.1.3 by @dependabot in https://github.com/kwebio/kweb-core/pull/360
    • Bump ktor-server-websockets from 2.1.2 to 2.1.3 by @dependabot in https://github.com/kwebio/kweb-core/pull/358
    • Bump ktor-server-default-headers from 2.1.2 to 2.1.3 by @dependabot in https://github.com/kwebio/kweb-core/pull/359
    • Bump ktor-server-compression from 2.1.2 to 2.1.3 by @dependabot in https://github.com/kwebio/kweb-core/pull/362
    • Bump ktor-network-tls-certificates from 2.1.2 to 2.1.3 by @dependabot in https://github.com/kwebio/kweb-core/pull/363
    • new kvar function and start of Renderable mechanism by @sanity in https://github.com/kwebio/kweb-core/pull/365

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.0.1...1.0.2

    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Oct 23, 2022)

    What's Changed

    • Prepare for Sonaype release by @aSemy in https://github.com/kwebio/kweb-core/pull/324
    • Bump selenium-chrome-driver from 4.5.0 to 4.5.2 by @dependabot in https://github.com/kwebio/kweb-core/pull/342
    • Bump selenium-java from 4.5.0 to 4.5.2 by @dependabot in https://github.com/kwebio/kweb-core/pull/343
    • Sonatype publishing: minor updates to maven-publish convention by @aSemy in https://github.com/kwebio/kweb-core/pull/345
    • Test Koverage by @sanity in https://github.com/kwebio/kweb-core/pull/346
    • Trying to set up autodeploy to Sonatype / Maven Central, not working yet by @sanity in https://github.com/kwebio/kweb-core/pull/344
    • fix indentation of "CSS & Style" chapter in SUMMARY.md by @Cyneath in https://github.com/kwebio/kweb-core/pull/348
    • Remove references to CDNs, tidy up bundled static files

    New Contributors

    • @Cyneath made their first contribution in https://github.com/kwebio/kweb-core/pull/348

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.0.0...1.0.1

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Oct 21, 2022)

    What's Changed

    • Bump kotlin-logging from 3.0.0 to 3.0.2 by @dependabot in https://github.com/kwebio/kweb-core/pull/331
    • Bump kotest-bom from 5.5.0 to 5.5.1 by @dependabot in https://github.com/kwebio/kweb-core/pull/333
    • Bump kotlinx-serialization-json from 1.4.0 to 1.4.1 by @dependabot in https://github.com/kwebio/kweb-core/pull/334
    • implement API binary compatibility validator by @sanity in https://github.com/kwebio/kweb-core/pull/337
    • Bump com.github.ben-manes.versions from 0.42.0 to 0.43.0 by @dependabot in https://github.com/kwebio/kweb-core/pull/339
    • Add integration docs with Spring Boot example by @BenjaminFaal in https://github.com/kwebio/kweb-core/pull/340
    • Bump org.jetbrains.kotlinx.binary-compatibility-validator from 0.11.1 to 0.12.0 by @dependabot in https://github.com/kwebio/kweb-core/pull/341

    New Contributors

    • @BenjaminFaal made their first contribution in https://github.com/kwebio/kweb-core/pull/340

    Full Changelog: https://github.com/kwebio/kweb-core/compare/0.12.7...1.0.0

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0-rc.2(Oct 19, 2022)

    What's Changed

    • implement API binary compatibility validator by @sanity in https://github.com/kwebio/kweb-core/pull/337
    • Bump com.github.ben-manes.versions from 0.42.0 to 0.43.0 by @dependabot in https://github.com/kwebio/kweb-core/pull/339
    • Add integration docs with Spring Boot example by @BenjaminFaal in https://github.com/kwebio/kweb-core/pull/340

    New Contributors

    • @BenjaminFaal made their first contribution in https://github.com/kwebio/kweb-core/pull/340

    Full Changelog: https://github.com/kwebio/kweb-core/compare/1.0.0-rc.1...1.0.0-rc.2

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0-rc.1(Oct 15, 2022)

    What is Kweb?

    Kweb is a web application framework written in Kotlin for backend developers. It's designed to be lightweight and easy to use, with a focus on efficiency, simplicity, and flexibility.

    Read The Kweb Book to learn more and to begin using Kweb.

    What does the 1.0.0 release mean?

    • After almost 6 years and 23 different contributors, Kweb has been used by enough people that we think the API is right and the code is reliable enough
    • We will try very hard to avoid breaking API changes, making full use of Kotlin's deprecation system
    • We think the documentation is of acceptable quality
    • We think our build and testing infrastructure is of acceptable quality

    This means increased confidence that Kweb will work well for you and Kweb version releases won't break your code (without a good reason).

    Is Kweb ready for a 1.0.0 release?

    The purpose of this release candidate is to find out. Whether you're new to Kweb or an existing user, please let us know what you think!

    What has changed since 0.12.7

    • Bump kotlin-logging from 3.0.0 to 3.0.2 by @dependabot in https://github.com/kwebio/kweb-core/pull/331
    • Bump kotest-bom from 5.5.0 to 5.5.1 by @dependabot in https://github.com/kwebio/kweb-core/pull/333
    • Bump kotlinx-serialization-json from 1.4.0 to 1.4.1 by @dependabot in https://github.com/kwebio/kweb-core/pull/334

    Full Changelog: https://github.com/kwebio/kweb-core/compare/0.12.7...1.0.0-rc.1

    Source code(tar.gz)
    Source code(zip)
  • 0.12.7(Oct 11, 2022)

    What's Changed

    • Bump selenium-jupiter from 3.3.5 to 4.3.1 by @dependabot in https://github.com/kwebio/kweb-core/pull/286
    • add attr block, perhaps new DSL is this simple by @sanity in https://github.com/kwebio/kweb-core/pull/317
    • update Gradle to kts by @aSemy in https://github.com/kwebio/kweb-core/pull/318
    • buildSrc convention plugins by @aSemy in https://github.com/kwebio/kweb-core/pull/320
    • initial buildSrc setup by @aSemy in https://github.com/kwebio/kweb-core/pull/319
    • Enable Gradle Build Cache, and update GHAs by @aSemy in https://github.com/kwebio/kweb-core/pull/321
    • Fix CI/CD, and additional config updates by @aSemy in https://github.com/kwebio/kweb-core/pull/322
    • add binary-compatibility-validator plugin by @aSemy in https://github.com/kwebio/kweb-core/pull/325
    • Revert "add binary-compatibility-validator plugin" by @sanity in https://github.com/kwebio/kweb-core/pull/327
    • Bump logback-classic from 1.4.3 to 1.4.4 by @dependabot in https://github.com/kwebio/kweb-core/pull/328
    • Bump org.jetbrains.dokka from 1.7.10 to 1.7.20 by @dependabot in https://github.com/kwebio/kweb-core/pull/329

    New Contributors

    • @aSemy made their first contribution in https://github.com/kwebio/kweb-core/pull/318

    Full Changelog: https://github.com/kwebio/kweb-core/compare/0.12.6...0.12.7

    Source code(tar.gz)
    Source code(zip)
  • 0.12.6(Oct 8, 2022)

    Overview

    After much waling and gnashing of teeth we've now got Kweb upgraded from Gradle 6 to the latest Gradle 7.5 - thank you so much to the contributors who helped, particularly @Derek52 and @tcrawford-figure. We've also bumped almost all other dependencies to their latest versions.

    Fully open source live website built on Kweb

    We now have a live example of a Kweb site deployed on Google Cloud, using FireStore as a database - set up to auto-deploy with Github Actions:

    What's Changed

    • Upgrade gradle to 7.5.1, migrate to kotest by @tcrawford-figure in https://github.com/kwebio/kweb-core/pull/305
    • Bump logback-classic from 1.4.1 to 1.4.3 by @dependabot in https://github.com/kwebio/kweb-core/pull/302
    • Build improvements by @3flex in https://github.com/kwebio/kweb-core/pull/307
    • Fix a few deprecations by @3flex in https://github.com/kwebio/kweb-core/pull/310
    • Remove Travis config by @3flex in https://github.com/kwebio/kweb-core/pull/306
    • Use JDK 17 (LTS) on CI by @3flex in https://github.com/kwebio/kweb-core/pull/308
    • Validate Gradle Wrapper on CI by @3flex in https://github.com/kwebio/kweb-core/pull/309
    • Bump com.github.johnrengelman.shadow from 6.1.0 to 7.1.2 by @3flex in https://github.com/kwebio/kweb-core/pull/311
    • Remove commons-io dependency by @3flex in https://github.com/kwebio/kweb-core/pull/312
    • Bump kotest-bom from 5.4.2 to 5.5.0 by @dependabot in https://github.com/kwebio/kweb-core/pull/315

    New Contributors

    • @tcrawford-figure made their first contribution in https://github.com/kwebio/kweb-core/pull/305
    • @3flex made their first contribution in https://github.com/kwebio/kweb-core/pull/307

    Full Changelog: https://github.com/kwebio/kweb-core/compare/0.12.5...0.12.6

    Source code(tar.gz)
    Source code(zip)
  • 0.12.5(Oct 2, 2022)

    What's Changed

    • Bump kotlin-stdlib from 1.6.10 to 1.7.20 by @dependabot in https://github.com/kwebio/kweb-core/pull/297
    • Bump org.jetbrains.kotlin.plugin.serialization from 1.6.10 to 1.7.20 by @dependabot in https://github.com/kwebio/kweb-core/pull/299
    • Bump junit-jupiter-api from 5.7.0 to 5.9.1 by @dependabot in https://github.com/kwebio/kweb-core/pull/296
    • Bump org.jetbrains.dokka from 1.5.0 to 1.7.10 by @dependabot in https://github.com/kwebio/kweb-core/pull/301
    • Bump gradle-versions-plugin from 0.36.0 to v0.42.0 by @dependabot in https://github.com/kwebio/kweb-core/pull/287
    • Bump junit-jupiter-engine from 5.9.0 to 5.9.1 by @dependabot in https://github.com/kwebio/kweb-core/pull/300

    Full Changelog: https://github.com/kwebio/kweb-core/compare/0.12.4...0.12.5

    Source code(tar.gz)
    Source code(zip)
  • 0.12.4(Oct 2, 2022)

    What's Changed

    • Bump kotlin-stdlib-jdk8 from 1.6.10 to 1.7.20 by @dependabot in https://github.com/kwebio/kweb-core/pull/294
    • Bump logback-classic from 1.3.0-alpha13 to 1.4.1 by @dependabot in https://github.com/kwebio/kweb-core/pull/291
    • Bump com.github.ben-manes.versions from 0.41.0 to 0.42.0 by @dependabot in https://github.com/kwebio/kweb-core/pull/262
    • Bump Ktor from 2.1.1 to 2.1.2

    Full Changelog: https://github.com/kwebio/kweb-core/compare/0.12.3...0.12.4

    Source code(tar.gz)
    Source code(zip)
  • 0.12.3(Sep 24, 2022)

  • 0.12.0(Sep 16, 2022)

Owner
Kweb
A nice Kotlin interface to one or more remote web browsers
Kweb
📒 NotyKT is a complete 💎Kotlin-stack (Backend + Android) 📱 application built to demonstrate the use of Modern development tools with best practices implementation🦸.

NotyKT ??️ NotyKT is the complete Kotlin-stack note taking ??️ application ?? built to demonstrate a use of Kotlin programming language in server-side

Shreyas Patil 1.4k Jan 4, 2023
Android app using Kotlin to manage to-do notes with firebase as backend service

TO-DO Manager TO-DO Manager is a simple note management app. Unlike other apps, TO-DO Manager is free and open source. You can access your nots from a

Ahmed Badr 3 Dec 10, 2022
Valtimo backend implementation template

Valtimo-backend-implementation-template Requirements Ensure docker desktop is in

Valtimo 1 Feb 7, 2022
Backend Project to support providing help to refugees

Project Project to implement the matching of guests and hosts, with special attention to verification of matches. Get it, run it: In order to build th

Eduardo de Vera Toquero 1 Apr 9, 2022
Utility for developers and QAs what helps minimize time wasting on writing the same data for testing over and over again. Made by Stfalcon

Stfalcon Fixturer A Utility for developers and QAs which helps minimize time wasting on writing the same data for testing over and over again. You can

Stfalcon LLC 31 Nov 29, 2021
A React Native library making file access easier for developers as first class citizens, without the tears

React Native File Gateway A React Native library making file access easier for developers as first class citizens, without the tears. ⚠️ NOTE: This li

Jimmy Wei 4 Sep 11, 2021
Netflix inspired OTT Home Screen, Contains implementation in Reactjs, Kotlin React Wrapper, Jetpack Compose Web

Netflix-Clone-React Practising React by building Netflix Clone Requirements TMDB api key : Add TMDB API key to AppApi.kt Learning Resourcce Build Netf

Chetan Gupta 61 Nov 13, 2022
Kotlin Multiplatform Sample - Android, iOS, Web, Desktop

KMP-Sample Kotlin Multiplatform Sample Android iOS Web (Compose for web) Desktop (Compose for desktop) ?? Structure Diagram ?? Build At least android

안홍범 14 Dec 13, 2022
A Kotlin Multiplatform Project using TMDB Api. Currently supports Android,iOS,Desktop and web platforms

A Kotlin Multiplatform Project using TMDB Api(https://www.themoviedb.org/). Currently this project is implemented in following platforms Andr

Jackson E J 11 Nov 10, 2022
A Kotlin Multiplatform and Compose template that allows you to easily set up your project targeting: Android, Desktop, and Web

A Kotlin Multiplatform and Compose template that allows you to easily set up your project targeting: Android, Desktop, and Web

Carlos Mota 3 Oct 27, 2021
Unsplash application for Android, Desktop and Web. Built using Kotlin Multiplatform and Compose

Unsplash Unsplash application for Android, Desktop and Web. Built using Kotlin Multiplatform and Compose with ❤️ ?? Presentation Set up the environmen

Carlos Mota 15 Nov 11, 2022
WordMasterKMP - WIP Kotlin Multiplatform sample inspired by Wordle and also Word Master web sample

WordMasterKMP WIP Kotlin Multiplatform sample inspired by Wordle and also Word M

John O'Reilly 56 Oct 4, 2022
Lambda-snake.kt - Snake Game Implementation for Web using Kotlin programming language compiled for Javascript

Projeto da disciplina de Linguagem de Programação Funcional 2021.1 (jan/2022) ??

Alex Candido 3 Jan 10, 2022
Spring boot web + Kotlin template project

kotpringboot-multimodule-template Table of Contents Overview How to run Overview How to run Run with profiles: Note that default spring profile would

Hwan Jo 7 Oct 30, 2022
A lightweight cache library written in Kotlin

[NEW] Released to Maven Central: 'com.github.yundom:kache:1.x.x' Kache A runtime in-memory cache. Installation Put this in your build.gradle implemen

Dennis 22 Nov 19, 2022
Easy lightweight SharedPreferences library for Android in Kotlin using delegated properties

Easy lightweight SharedPreferences library for Android in Kotlin using delegated properties Idea Delegated properties in Kotlin allow you to execute a

null 25 Dec 27, 2022
StaticLog - super lightweight static logging for Kotlin, Java and Android

StaticLog StaticLog is a super lightweight logging library implemented in pure Kotlin (https://kotlinlang.org). It is designed to be used in Kotlin, J

Julian Pfeifer 28 Oct 3, 2022
Koi, a lightweight kotlin library for Android Development.

Koi - A lightweight Kotlin library for Android Koi include many useful extensions and functions, they can help reducing the boilerplate code in Androi

Hello World 514 Nov 29, 2022