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.