A small set of opinionated modules that compose into a real application
without forcing you to learn a build system.
React pattern, without VDOM
Same component-driven pattern as React — each section has its own controller class — but on native browser APIs.
yw-controler, yw-css, yw-language declared in HTML, hydrated from ES6 classes.
Direct DOM, no diffing overhead.
Lightweight, fast & maintainable
A small set of focused modules with no hidden magic. Each module does
one thing, has a minimal surface, and composes cleanly with the others.
Fast to start, easy to reason about, straightforward to upgrade.
Tests: back to front
One test framework from Java unit tests to full browser end-to-end.
yoja-selenium boots the real server, drives a browser,
runs JS modules as steps — all from a JUnit 6 @TestFactory.
Designed for AI
Plain Java and native ES6 — no transpiler output, no generated
boilerplate. Code produced by an AI assistant runs as-is; the
framework's explicit conventions give models a consistent surface to
read, generate and modify.
Built on Vert.x
Non-blocking I/O, native HTTP/2, and a tested event-loop runtime.
Yoja wraps the parts you need with a small, fluent surface.
No build toolchain
Gradle on the JVM, native ES modules in the browser. Drop a JS file,
reload the page. No bundler, no transpiler, no source maps to chase.
Sessions & sockets
Cookie-bound sessions, broadcast-ready WebSocket endpoints, jar-served
or folder-served resources — all from the same router.
Flex CSS
Each section carries its own scoped stylesheet via yw-css,
isolated in a Shadow DOM. Write plain CSS with Flexbox — no CSS framework
required, no class-name collisions, no specificity wars between sections.
Reverse-proxy included
Route by host + path to one or many upstreams, with load-balancing,
SSL termination, and a live admin API to swap rules at runtime.