Mateu
Build business UIs in Java
Mateu is a model-driven UI framework for business applications.
Define your UI once in Java.
Mateu generates forms, CRUD, navigation and application shells from that model.
Why Mateu
Traditional business apps often mean:
- backend logic
- frontend app
- API layer
- duplicated models
- duplicated validation
- duplicated routing
- more glue code than expected
Mateu takes a different approach:
- one application model
- one source of truth
- less duplication
- fewer moving parts
For the full positioning, see Why Mateu → and Mateu vs traditional stack →.
Stateless by design
Mateu does not keep UI state on the server. Each request instantiates the viewmodel, hydrates it, executes the action, and returns the result.This means:
- no server-side UI sessions
- no sticky sessions
- no per-user memory footprint
Unlike stateful frameworks such as Vaadin, Mateu keeps your backend truly stateless, which makes it a strong fit for microservices, ephemeral pods, and horizontal scaling.
Works with your stack
Mateu does not require a specific backend framework.
If you are using Java, you can integrate Mateu with:
- Spring Boot MVC
- Spring WebFlux
- Micronaut
- Quarkus
- or any HTTP-based backend
Mateu sits on top of your existing application.
There is no need to:
- rewrite your backend
- change your architecture
- adopt a new runtime
This makes adoption gradual and low-risk.
Bring your own frontend
Mateu separates UI definition from rendering.
Your UI is defined in Java, but it is rendered by a frontend.
This means you are free to use:
- different design systems
- different frontend implementations
- different rendering strategies
Mateu already provides a default renderer, but you are not tied to it.
You can evolve or replace the frontend without changing your backend model.
When to use Mateu
Mateu is designed for business applications.
- best for → admin panels, internal tools, distributed backoffices
- not ideal for → marketing sites or highly custom UIs
The core idea
In Mateu, you define:
- state with fields
- actions with methods or callables
- rendering and behavior with annotations
- routing and navigation in the same model
Mateu turns that into a working UI.
To understand the mental shift, see:
Three strong use cases
1. Admin panels
Build CRUD-heavy backoffice screens directly from your Java model.
This is the fastest way to understand the value of Mateu.

2. Distributed backoffices
Let each microservice define its own UI and compose everything in one shell.
This is one of Mateu’s most distinctive strengths.

3. Embedded UI
Use Mateu inside React, Vue, Angular or even plain HTML through a web component.
This makes adoption gradual and low-risk.

Architecture
Mateu is intentionally simple at a high level:
- backend code defines the UI
- Mateu exposes that through a small API
- a renderer turns it into a real browser UI
That separation makes Mateu a strong fit for:
- microservices
- stateless systems
- distributed UIs
- pluggable renderers
Read more here:
Recommended path
If you’re new to Mateu, follow this order:
Java manual
The Java manual is already organized as a guided path:
One-sentence summary
Mateu turns backend objects into real business UIs through a simple model, a small API and a renderer.
Community
Mateu is evolving. Join the community: