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.