Stop building the same app twice
Build full web apps with minimal code
Define your app once.
Mateu builds the UI, routing, interaction and security.
No HTML. No CSS. No JavaScript.
No duplicated models. No API glue. No sync issues.
One model. Full app.
With Mateu, your application is a single model:
- fields → state
- methods → actions
- annotations → UI, routing, behavior, security
Mateu generates:
- UI
- navigation
- routing
- interaction
- validation
- security
🔐 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 frontend auth.
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.
Routing without a router
Routing is part of your model.
@Route("/users/:id")
public class UserDetail {
String id;
}
- automatic parameter binding
- nested routes
- implicit routes from menus
No route config. No duplication.
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
- 🔐 Built-in security
- 🧭 Routing without configuration
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 building the same app twice
Define it once.
Built by developers who got tired of writing useless code.