Skip to content

Mateu

Build backoffice UIs without building a frontend. Backend-driven UI for distributed systems.

Most business applications end up with two applications:

backend → API → frontend → duplicated model → duplicated validation

That usually means duplicated business concepts, duplicated validation, more glue code, more moving parts, and harder maintenance.

backend (Java · Kotlin · C# · Python) → Mateu wire protocol → browser · desktop · mobile

The backend owns the UI.

Mateu lets your backend expose real business UIs directly, without turning every internal tool into a separate frontend project.

@UI("/orders")
public class Orders extends AutoCrud<Order> {}

Products list — generated from the code above

Wondering how this differs from a React SPA, Vaadin, or a CRUD generator? See Mateu vs the traditional stack →.

Admin panels

Fast CRUD-heavy backoffice screens directly from your Java model.

Distributed backoffices

Let each microservice define its own UI and compose everything in one shell.

Embedded UI

Use Mateu inside React, Vue, Angular or plain HTML through a web component.

Real-world architectures

Works naturally with microservices, DDD, CQRS, and hexagonal architecture.

Mateu works with Spring Boot MVC, Spring WebFlux, Micronaut, Quarkus, and any HTTP-based Java backend. You keep your architecture. Mateu becomes one more inbound adapter.

Mateu’s UI travels as a wire protocol, not as framework code. That means:

  • Polyglot servers — write your UI in Java, Kotlin, C# or Python (C# and Python are early-stage); they all emit the same UI model.
  • Multi-frontend — the same backend renders on five web design systems (Vaadin, SAP UI5, Oracle Redwood, PatternFly, SLDS) and on native desktop and mobile (JavaFX, Compose Multiplatform, React Native), without touching your code.
  1. Quickstart
  2. Admin panel
  3. Customizing CRUD and listings
  4. Golden example: Orders, Customers and Order lines
  5. Real-world architecture