On This Page
Distributed control plane (SSR → SSG)
This project demonstrates Mateu in a real distributed architecture:
- multiple microservices
- UI owned by each service
- stateless backend
- DTO-driven UI
- workflows + forms integration
Architecture
[ Browser ]
↓
[ Mateu Renderer ]
↓
[ Mateu API ]
↓
-------------------------
| Microservices layer |
| |
| Content Service |
| Control Plane |
| Static Server |
| EventConductor |
-------------------------
Core idea
Mateu is a UI orchestration layer for distributed systems
1. Service-owned UI
Each service exposes its own UI:
@UI("/_content-service")
public class ContentServiceHome {}
Each module defines:
- menu
- routes
- orchestrators
👉 No shared frontend needed
2. UI composition (shell)
A shell aggregates UIs:
[ Shell ]
├── Content Service UI
├── Control Plane UI
└── Other modules
👉 Federated backoffice
3. DTO → Row → UI
new ChangeRow(
dto.pageId(),
dto.page(),
dto.country(),
dto.language(),
new Status(...),
new ColumnAction("compare", "Compare")
)
Flow:
DTO → Row → Component → UI
👉 UI model is explicit
4. Actions as contracts
new ColumnAction("compare", "Compare")
Flow:
User click → actionId → backend → use case
👉 No logic in frontend
5. Query services
[ UI ] → [ Query Service ] → [ Database / API ]
- no entity leakage
- no ORM dependency
- pure read models
6. Lookups across services
@Lookup(search = LabelOptionsSupplier.class, label = LabelLabelSupplier.class)
UI → Supplier → Query Service → Results
7. Workflows + forms
UI → Workflow Engine → Form → User Input → Execution
Mateu:
- triggers workflows
- renders forms
- handles results
8. Stateless model
Each request:
- instantiate view model
- hydrate state
- execute action
- return UI diff
👉 No server session
9. Why this architecture matters
- independent deployments
- scalable
- no frontend duplication
- backend-owned UI
10. Final insight
Mateu lets backend teams build complete distributed UIs
without owning a frontend stack