Inspiration

Weblith.io is a 2-year old internal framework derived from others like Ninja, Spring Boot and MangooIO. It is based on stable well-known libraries : Google Guice, Lightbend Config, Undertow, Hibernate ORM, Hibernate Validator, Jackson, Freemarker... The hackathon was giving a chance to try replacing some libraries with Quarkus.

What it does

It manages all the concepts of plain "old fashioned" web application : paths/pages, form submission and validation, client-side sessions (cookies), i18n, templating... But also offer a large set of reusable UI components. As Quarkus, it focusses on writing less code for common tasks.

You'll find the complete description on the GitHub README.

How I built it

I first looked at Qute (and even send my first PR) to see if I could afford to write again all our components. But it was not a viable solution, so I took the concepts of the initial framework and the existing UI components I had to write this project.

Challenges I ran into

It was really hard to understand how to writer a clean extension. I got a lot of informations simply by searching in the whole Quarkus code base. I also had to make some digging into Reasteasy's way of working to be able to rewrite Weblith's initial ideas, originally based on Undertow blocking handler (without servlet support).

Accomplishments that I'm proud of

I was able to get rid of 50% of the boilerplate code in the core project. All the config, server and CDI parts are no anymore needed. The restart time is now around .5 to 2 seconds ; when it was around 5 to 7 secondes before, essentially due to Hibernate + Google Guice boostrap phases.

What I learned

A lot about the internal way of working of Quarkus ;-)

What's next for Weblith.io

I must see if it can be finalized and stable for our production projects. There is style a place for small or mid-range project based on serverside rendered web application... Should it be made with Quarkus, even if it's not native or reactive? Probably. There are other clear advantages to have a Quarkus based application.

Built With

  • fomantic-ui
  • freemarker
Share this project:

Updates