Public source validation / validate (push) Failing after 3m8s
309 lines
5.3 KiB
Markdown
309 lines
5.3 KiB
Markdown
# UX specification
|
|
|
|
## 1. Experience principles
|
|
|
|
- **Explain before exposing raw detail.**
|
|
- **Dense, not cramped.**
|
|
- **Live, not distracting.**
|
|
- **Configurable, not chaotic.**
|
|
- **Safe, not action-heavy.**
|
|
- **Unknown is visible.**
|
|
- **Desktop, mobile and wallboard are designed separately.**
|
|
|
|
## 2. Information architecture
|
|
|
|
```text
|
|
Overview
|
|
Dashboards
|
|
|
|
Infrastructure
|
|
Host
|
|
Hardware
|
|
Storage
|
|
Network
|
|
UPS
|
|
|
|
Containers
|
|
Applications
|
|
Services
|
|
|
|
Alerts
|
|
Incidents
|
|
Events
|
|
|
|
Explore
|
|
Metrics
|
|
Compare
|
|
History
|
|
|
|
Wallboards
|
|
|
|
Settings
|
|
Data sources
|
|
Discovery
|
|
Alerting
|
|
Notifications
|
|
Retention
|
|
Users & access
|
|
Backups
|
|
System
|
|
```
|
|
|
|
Navigation may collapse responsively. Route names and labels are localized.
|
|
|
|
## 3. Global shell
|
|
|
|
### Header
|
|
|
|
- current server/environment;
|
|
- global time range;
|
|
- live/pause control;
|
|
- refresh/freshness state;
|
|
- active filters;
|
|
- alert count;
|
|
- user menu.
|
|
|
|
### Source freshness
|
|
|
|
A compact indicator exposes:
|
|
|
|
- healthy;
|
|
- delayed;
|
|
- stale;
|
|
- unavailable.
|
|
|
|
Opening it lists each datasource and last successful sample.
|
|
|
|
### Global time control
|
|
|
|
Presets:
|
|
|
|
- Live;
|
|
- 15 minutes;
|
|
- 1 hour;
|
|
- 6 hours;
|
|
- 24 hours;
|
|
- 7 days;
|
|
- 30 days;
|
|
- custom.
|
|
|
|
A widget may override the dashboard range, but the override is clearly indicated.
|
|
|
|
## 4. Overview
|
|
|
|
### Healthy state
|
|
|
|
Prioritize trends, capacity and service summary.
|
|
|
|
### Degraded state
|
|
|
|
A problem summary appears before normal cards:
|
|
|
|
```text
|
|
Degraded
|
|
Cachepool is 91% full.
|
|
Plex restarted 4 times in 10 minutes.
|
|
Prometheus storage metrics are 3 minutes stale.
|
|
```
|
|
|
|
Each reason links to its entity and relevant timeframe.
|
|
|
|
### Layout
|
|
|
|
The system template must remain useful before any editing:
|
|
|
|
- status summary;
|
|
- active incidents;
|
|
- CPU/load;
|
|
- memory;
|
|
- array/pools;
|
|
- network;
|
|
- container/application state;
|
|
- service matrix;
|
|
- recent events.
|
|
|
|
## 5. Dashboard composer
|
|
|
|
### Modes
|
|
|
|
**View mode**
|
|
- no drag handles;
|
|
- widgets fixed;
|
|
- normal chart interactions;
|
|
- fast rendering.
|
|
|
|
**Edit mode**
|
|
- visible grid and selection outlines;
|
|
- drag/resize handles;
|
|
- widget library;
|
|
- undo/redo;
|
|
- save/exit;
|
|
- breakpoint preview.
|
|
|
|
Unsaved changes are clearly indicated. Navigation away prompts only when changes would be lost.
|
|
|
|
### Grid
|
|
|
|
Recommended logical columns:
|
|
|
|
- large desktop/wallboard: 24;
|
|
- desktop: 18;
|
|
- tablet: 8;
|
|
- mobile: 1.
|
|
|
|
Widgets define minimum and preferred sizes. Collision handling and snapping are predictable.
|
|
|
|
### Widget configuration drawer
|
|
|
|
Tabs:
|
|
|
|
1. Data
|
|
2. Visualization
|
|
3. Thresholds
|
|
4. Behavior
|
|
5. Links
|
|
6. Advanced
|
|
|
|
Changes preview live but persist only through the editor save transaction.
|
|
|
|
### Editing interactions
|
|
|
|
- keyboard move/resize alternative;
|
|
- duplicate;
|
|
- lock/unlock;
|
|
- hide per viewport;
|
|
- copy to another dashboard;
|
|
- reset to template;
|
|
- restore version;
|
|
- inspect validation errors before save.
|
|
|
|
## 6. Entity pages
|
|
|
|
Common structure:
|
|
|
|
1. identity, status and reason;
|
|
2. key values and freshness;
|
|
3. primary charts;
|
|
4. relationships/dependencies;
|
|
5. events;
|
|
6. alerts/incidents;
|
|
7. technical metadata.
|
|
|
|
Deep technical payloads are collapsed by default.
|
|
|
|
## 7. Alerts and incidents
|
|
|
|
### Alert list
|
|
|
|
Supports filters for:
|
|
- state;
|
|
- severity;
|
|
- entity;
|
|
- source;
|
|
- acknowledged;
|
|
- maintenance;
|
|
- time.
|
|
|
|
Each row shows:
|
|
- concise rule name;
|
|
- affected entity;
|
|
- current value/reason;
|
|
- duration;
|
|
- state;
|
|
- incident relationship.
|
|
|
|
### Incident page
|
|
|
|
- plain-language summary;
|
|
- severity and lifecycle;
|
|
- affected entities;
|
|
- contributing alerts;
|
|
- timeline;
|
|
- selected charts;
|
|
- acknowledgement/notes;
|
|
- uncertain relationship labels;
|
|
- external workflow link when configured.
|
|
|
|
## 8. Mobile
|
|
|
|
Primary mobile navigation:
|
|
|
|
- Overview;
|
|
- Incidents;
|
|
- Containers;
|
|
- Storage;
|
|
- Services;
|
|
- More.
|
|
|
|
Mobile priorities:
|
|
- global status;
|
|
- active incident;
|
|
- acknowledgement;
|
|
- essential entity facts;
|
|
- readable charts with reduced series;
|
|
- touch-sized controls.
|
|
|
|
Dashboard editing on mobile:
|
|
- reorder;
|
|
- show/hide;
|
|
- simple config;
|
|
- no precision freeform grid placement.
|
|
|
|
## 9. Wallboard
|
|
|
|
- fullscreen;
|
|
- no standard navigation;
|
|
- large readable status;
|
|
- page rotation;
|
|
- reconnect indicator;
|
|
- last update/freshness;
|
|
- optional kiosk-safe token/session;
|
|
- no edit controls;
|
|
- subtle movement strategy to reduce static burn-in risk;
|
|
- survives days without reload.
|
|
|
|
## 10. Loading, empty and failure states
|
|
|
|
Every data surface defines:
|
|
|
|
- initial loading;
|
|
- incremental live update;
|
|
- empty because no entities exist;
|
|
- empty because filters exclude all;
|
|
- stale;
|
|
- unavailable;
|
|
- unauthorized;
|
|
- query limit exceeded;
|
|
- partial data.
|
|
|
|
Skeletons must not imply exact values. Previous values may remain visible only with an explicit stale age.
|
|
|
|
## 11. Copy
|
|
|
|
Default user-facing copy is natural Dutch:
|
|
|
|
Good:
|
|
- `Geen recente gegevens`
|
|
- `Container herstart herhaaldelijk`
|
|
- `Cachepool bijna vol`
|
|
- `Laatst succesvol bijgewerkt om 13:42`
|
|
|
|
Avoid:
|
|
- raw metric names;
|
|
- unexplained `NaN`;
|
|
- only `Error 500`;
|
|
- invented root-cause certainty;
|
|
- alarmist language for attention-level conditions.
|
|
|
|
## 12. Accessibility
|
|
|
|
- WCAG 2.2 AA target for core workflows.
|
|
- Full keyboard navigation.
|
|
- Visible focus.
|
|
- Text/icon plus color for status.
|
|
- Reduced-motion support.
|
|
- Charts have accessible summaries/table alternatives.
|
|
- Drag interactions have non-pointer alternatives.
|
|
- Contrast is validated in all themes/states.
|
|
- Live regions announce important state changes without constant noise.
|