About this project

JUI is a lightweight Java framework for creating interactive web applications with a deliberately small application surface. The canonical API lives under `it.jui.framework` and follows a simple model: implement `JuiApp`, receive a `UIContext`, and describe the application using compact Java calls such as `ui.title(...)`, `ui.textInput(...)`, `ui.button(...)`, `ui.table(...)` and `ui.map(...)`. JUI then handles HTTP, browser rendering and session state. A minimal application implements `JuiApp` and overrides `run(UIContext ui)`, calling methods like `ui.title(...)` and `ui.text(...)`. Interactive applications can read inputs such as `ui.textInput(...)` and `ui.slider(...)`, and react to `ui.button(...)`, which uses one-shot event semantics: a click evaluates to `true` for the render triggered by that click and is then consumed. Widget state is keyed deterministically from the widget label in the current API. Text-oriented APIs escape HTML by default, while raw HTML must be explicit through `ui.html(...)`. A CLI supports creating a source file from the canonical template (`init`), running it (`run`) and watching it (`watch`). JUI compiles the application source using the current JDK and serves it through a built-in HTTP server. The project is organized into modules: `jui-core` is the current implementation and canonical API, while `jui-core-old` is a legacy implementation retained for historical/reference purposes only. Other modules and playground code may still contain legacy examples and should not be treated as the API source of truth. A stated long-term design goal is to make JUI especially suitable for code generation by small local LLMs, favoring few source tokens, little framework context and deterministic APIs. The design principle is described as "Minimum tokens from user intent to running application." Future work is expected to favor high-semantic-density application primitives, a compact validated application model/IR, machine-generated API metadata for LLM context, and deterministic packaging/deployment. The project builds with `mvn test`; the normal unit-test suite must terminate automatically, and manual tests that start a blocking server are kept disabled from the Maven unit-test lifecycle. JUI is licensed under the Apache License 2.0.