Skip to content

orray-proj/orray-poc

Repository files navigation

Orray

A visual-first Internal Developer Platform β€” exploring spatial interfaces for complex system management.

This is a Proof of Concept. No backend, no real data, no integrations. Every node, edge, metric, and trace is hardcoded. The sole purpose is to test whether a system-as-a-map interface works β€” and to serve as a starting point for design reasoning.

Philosophy

Spatial reasoning over sequential navigation

Humans are wired to reason spatially β€” about proximity, flow, direction, containment. Traditional developer platforms present systems as lists, tables, and trees, forcing users to reconstruct spatial relationships in their heads.

Orray places the entire system on a canvas. Services, databases, queues, and caches become objects with physical positions. Connections become visible lines with direction. The topology isn't described; it's drawn.

Layers as a third dimension

Different people need different views of the same system. Rather than three dashboards, Orray introduces layers β€” stacked views of the same spatial canvas. The topology stays fixed, but the information changes entirely:

Layer Persona What you see
Live Software Engineer Request paths, latency, error propagation, span IDs
Building Product Owner / PM Draft components, backlog items, team ownership, planned connections
Platform DevOps / SRE CPU, memory, pod counts, health status, versions, uptime

Focus through reduction

Noise is the enemy. The interface actively helps you not see things you don't need. Layer switching removes entire categories of information. Trace dimming fades irrelevant nodes. Semantic zoom lets you enter a service and break it down.

"Simplicity is the ultimate sophistication."


Ideas

ID Name TL;DR Details
I1 Timeline + Relive Draggable timeline panel; click event to enter snapshot; relive mode replays traces step-by-step ideas.md#i1
I2 Repo Introspection LLM inspects repo structure, maps features and connections ideas.md#i2
I3 RBAC Meta-canvas where platform functions become nodes; configure permissions spatially ideas.md#i3
I4 Semantic Zoom Zoom into a node to reveal internals (features, kafka topics) ideas.md#i4
I5 DevOps View Full cluster visibility in Platform layer (namespaces, pods, kubelet) ideas.md#i5
I6 Universal Search cmd+k to search anything ideas.md#i6
I7 Multi-collaboration Real-time multi-user editing + chat ideas.md#i7
I8 Env Stacking Z-axis stacking of environments; diff highlighting; quick diff overlay ideas.md#i8
I9 Kargo Plugin Autopromote / schedule service promotions across envs ideas.md#i9
I10 Blast Radius "What if this dies?" domino-effect simulation across the graph ideas.md#i10
I11 Cost Flow Layer Edge thickness = dollar cost; radial fill on nodes for monthly spend ideas.md#i11
I12 Ambient Sonification Generative audio mapped to system health; hear degradation before seeing it ideas.md#i12
I13 Canvas Annotations Freeform drawing layer (pen, arrows, stickies) persisted per-layer ideas.md#i13
I14 Spatial Bookmarks Save camera + layer + focus + timeline as a named viewpoint; deep-linkable ideas.md#i14
I15 AI Narrator LLM narrates system events in natural language; click to navigate ideas.md#i15
I16 Ownership Territories Convex hulls colored by team; visualize boundaries and orphaned services ideas.md#i16
I17 Runbook Actions Right-click node for actions (restart, scale, deploy); canvas as control plane ideas.md#i17
I18 Project List Zoom-out past threshold to see all projects as live-thumbnail tiles ideas.md#i18

Design Choices

  • SRD as representation of a resource node. Deployments are too fine-grained.
  • Divide SRD resources by project / environment.
  • Inputs:
    • db β€” link to an already deployed GreptimeDB, self-deployed by us if not provided
    • collector β€” optional, requires config from the user to set a new destination for the telemetries
    • org link β€” for LLM inspection (?)

Open Questions

  • Layout: auto, with manual intervention in building layer.
  • Plugins: No. Conflicts with business model. Simplifies design. Does not mean building an unscalable monolith.

Research

Topic File
Performance: ReactFlow ceiling & alternatives docs/performance.md
Market: K8s adoption, IDP landscape, pain points docs/market-research.md

What this PoC demonstrates

  • Interactive canvas β€” React Flow with custom nodes (service, database, queue, gateway, cache), animated edges, ghost nodes for drafts
  • Three persona layers β€” Live (cyan), Building (amber), Platform (teal) switchable via header or 1/2/3 keys
  • Focus mode β€” Click a node to scatter neighbors to viewport edges, isolating the focus target
  • Timeline panel β€” Draggable, proportional bar chart with event snapshots and natural-language search
  • Node detail panel β€” Slide-in inspector with layer-specific metadata
  • Mock topology β€” E-commerce system: API Gateway, 5 services, 3 databases, Redis, Kafka, 2 draft nodes

Structure

src/
β”œβ”€β”€ data/           # Mock data (types.ts, system.ts) β€” decoupled from UI
β”œβ”€β”€ stores/         # Zustand store β€” layer state, selection, computed nodes/edges
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ canvas/     # SystemCanvas, CanvasHeader, SystemNode, DataFlowEdge
β”‚   └── panels/     # NodeDetailPanel, BuildingToolbar, TimelinePanel
β”œβ”€β”€ hooks/          # Keyboard shortcuts
└── routes/         # TanStack Router

Stack

React 19 Β· Vite 7 Β· React Flow Β· Zustand Β· Tailwind 4 Β· shadcn/ui Β· Motion Β· Bun

Running

bun install && bun dev

About

🎨 A spatial IDP PoC. Your entire system on a canvas. Services, databases, queues, and data flows as visible objects you navigate by zooming. Layer-switch between tracing, building, and platform views. No backend, pure design exploration.

Resources

Stars

Watchers

Forks

Contributors

Languages