Spec-driven development.
Build full web apps with minimal code
Define your app once.
Mateu builds the UI and wires everything together.
No HTML. No CSS. No JavaScript.
No duplicated models. No API glue. No fragmented architecture.
One model. Full app.
With Mateu, your application is defined as a single model:
- fields → state
- methods → actions
- annotations → behavior and rendering
Mateu generates:
- UI
- navigation
- interaction
- validation
- browser behavior
🔐 Built-in security
Secure your entire app declaratively.
@UI("")
@KeycloakSecured(
url = "https://your-auth-server",
realm = "your-realm",
clientId = "your-client"
)
public class App {}
No separate frontend auth layer.
No duplicated security logic.
From this
@UI("")
public class Home {
@ReadOnly
int count = 0;
@Button
Runnable increment = () -> count++;
}
To this

Real app. No frontend.
Built entirely from Java classes. No frontend code.
Why this matters
Modern apps are split across:
- backend
- frontend
- APIs
- duplicated models
- synchronization layers
You build the same app twice — and maintain the gap forever.
Mateu removes that gap
- one source of truth
- no duplication
- no glue code
- no sync problems
Spec-driven
Mateu is not backend-driven or frontend-driven.
It is:
spec-driven
Your app is defined once — not split across layers.
What Mateu gives you
- ⚡ Build apps 10x faster
- 🧠 One language, one mental model
- 🔥 No frontend bugs
- 🧩 High-level building blocks
- 🌐 Stateless, microservice-friendly
- 🔌 Embeddable UI (web components)
- 🔐 Secure your UI declaratively
More examples
Built for real architectures
Mateu fits naturally with:
- Spring Boot
- DDD
- Hexagonal architecture
It does not replace your backend.
It sits on top of it.
Learn by building
👉 Build a full backoffice in 10 minutes →
👉 Explore the documentation →
👉 View GitHub →
Stop splitting your app
Define it once.
Built by developers who got tired of writing useless code.