Opensource Kotlin DSL based on Vaadin to create Rich Web Application

Hello everyone, I have started a little opensource project based on Vaadin, I would love to have some feedback on it. It is a DSL based on Vaadin 16 that enhances it.

It handles all the communication between the client and the backend and leave to the Kotlin developer, the possibility to only work with simple Kotlin data classes and function to define the reactions to the interactions with the UI. It is in a very early stage and every comment/idea is welcome.

Check it out at https://github.com/marcomanzi/eternalUi/wiki

I would really appreciate if anyone from the Vaadin Team can check it out because I’m a fan of how they work and I would love to have their opinion on how I enhanced ( I hope :slight_smile: ) it.

Hi Marco, I’ve checked out the sources briefly - nice work!

It seems to me that the underlying idea of your framework is to define the UI declaratively via data classes such as UIComponent (e.g. VerticalContainer). This looks to me like an additional abstraction layer over the Vaadin component hierarchy, which may bring additional learning overhead for the users of your framework. Alternative way could be to use the [Karibu-DSL]
(https://github.com/mvysny/karibu-dsl) library which only offers DSL functions, building Vaadin components directly. I personally grew to appreciate the simplicity of direct approach offered by Karibu-DSL in the imperative DSL functional way. However, I’m sure there are programmers which will choose the declarative way on purpose, so it could be beneficial to have both approaches available.

I can also see the work done in the database integration - awesome job! I assume that you plan to use Spring to fetch data; having AbstractDataProvider to offer a higher-level APIs like filters and such. I can see that the intent of the framework is to provide an all-around support for writing full-stack apps. If this is correct, then these goals align with goals of the [Vaadin-on-Kotlin]
(https://vaadinonkotlin.eu/) framework (or VoK for short). It’s good to have multiple frameworks - it provides opportunities to learn from each other, trying things in a different way, and also for the users to pick better according to their taste :slight_smile:

There are higher-level concepts in your framework which are not present in VoK, such as PageController, PageDomain and others - that looks like a strong point of your framework.

Mmm I’ll check Karibu-DSL and Vaadin-on-Kotlin to see if I can integrate it.
My main focus on this framework are:

  1. Easy way to update Vaadin: because I have an overlay and a bridge to Vaadin I was able to easily change the Vaadin version. I started with Vaadin 8 and now I’m updating to Vaadin 16, all without changing the main components.
  2. Easy way to handle transformation of the domain that react when UI is interacted with. To have a ‘near functional’ approach on the UI development.

Thanks a lot for your feedback :slight_smile: