Skip to content

UX Patterns

Backoffice applications are work tools. Their quality is measured not by visual flair but by productivity, safety, and the reduction of cognitive effort. Users spend hours inside these systems — every unnecessary click, every lost filter, every context switch carries a real operational cost.

Mateu’s thesis is that good business UX is regular enough to be codified once, on the backend, and applied consistently without writing frontend code. This section documents the patterns Mateu supports and how to express each one.

Seven principles drive every pattern in this catalogue. Each exists to eliminate a concrete cost.

#PrincipleWhat it prevents
01Preserve contextUsers should never lose their orientation or mental state. Leaving a screen to come back is the most expensive form of context loss.
02Minimize navigationFewer screens and fewer jumps equal more productivity. Composing beats navigating.
03Keyboard-firstPower users live on the keyboard. If a frequent task requires a mouse, it is badly designed.
04Workflow over screensThe unit of design is the task, not the screen. Design to complete work, not to display an entity.
05Progressive complexityShow complexity only when it adds value. Advanced features are revealed, not imposed.
06RecoverabilityEvery error must be correctable. Confirm destructive actions, undo reversible ones, never lose work in progress.
07ConsistencyPatterns repeat predictably. What a user learns on one screen works on all.
PatternStatusKey primitive
Navigation & Menus✅ Implemented@App(AppVariant.*), ⌘K command palette
Split View✅ Implemented@SplitCrud
Filters & Listing✅ Implemented@List, @Filterable, @RowAction
Wizard✅ Implemented@WizardCompletionAction
Entity Picker✅ Implemented@Lookup, @Composition
WorkspaceComposition@SplitLayout, @Tabs, @Accordion
Task-centric pageComposition@Action, @MainAction
Long-running jobs✅ Implemented@Action(background, sse), @Trigger
Autosave✅ Implemented@AutoSave
Keyboard Shortcuts✅ Implemented@Action(shortcut = ...), @Trigger(OnEnter)

Each anti-pattern has a name so it can be recognised quickly — and a pattern that prevents it.

Anti-patternDescriptionSolved by
CRUD TunnelList → detail → back, breaking the flow on every row visit.Split View
Modal HellNested modals that destroy orientation.Split View, Task-centric page
Spinner PrisonFreezing the entire screen while something loads.Long-running jobs
Filter AmnesiaLosing filters when navigating away.Deep linking via @Route, Saved Views (planned)
Desktop DenialIgnoring the keyboard and penalising the expert user.Keyboard Shortcuts@Action(shortcut = ...)