mAi f429111462 docs: design pass 1 — schema, API, importer, sync, slices
Inventor shift 1. Reads the live Cable-Management.excalidraw on
mxdrw.msbls.de, lands on:

- vanilla JS modules + SVG diagram (no build step) served by a single
  Go binary with embed.FS
- SQLite schema with frames, devices, ports, cable_types, cables,
  io_markers, bundles (cgo-free driver)
- HTTP API under /api/, /api/state as the editor's one-shot loader
- importer that respects port-on-edge geometry (ports are positional,
  not containerId-bound) and resolves arrow endpoints to port/device/IO
- bundle detection MVP: same-endpoints-pair → suggestion
- sync model: DB authoritative, Excalidraw is a projection, manual
  import/export buttons with element-ID stability and conflict flagging
- five vertical slices for the coder shift, smallest end-to-end first
- nine open questions for m before code starts

Ends with DESIGN READY FOR REVIEW.
2026-05-15 12:26:27 +02:00

mCables

Cable management for m's setup — visual interface + SQLite inventory, generating + updating Excalidraw diagrams via mExDraw.

Status

Bootstrap. Architecture sketch below; implementation pending.

Goal

Track devices, ports, and cables across m's setups (server rack, office, living room). Generate / update Excalidraw diagrams from the inventory. Detect bundles of parallel cables. Visualise cable types by colour (RJ45, DP, HDMI, USB, Power, …).

m's existing drawing is the seed: https://mxdrw.msbls.de/draw/Cable-Management.excalidraw — devices are rectangles, ports are ellipses positioned on the device, cables are arrows from port to port, cable type is encoded via colour with a legend.

Architecture sketch

Layer Tech Role
Storage SQLite (~/.m/mcables.db) devices, ports, cables, cable_types, bundles, frames
Backend Go HTTP API serving the visual frontend, mExDraw integration for diagram I/O
Frontend Visual web UI Browser-based editor (no CLI). Add/edit devices and cables, see live preview
Output mExDraw via MCP Render + update Excalidraw drawings
Project tracking mBrian topic-mcables Decisions, status, links to drawings — not the data itself

Tech decisions (open)

  • Frontend stack — vanilla TS + small UI lib, or a framework (Svelte / Preact)?
  • Diagram import from the existing Cable-Management.excalidraw — one-shot migration script that parses bindings → DB rows.
  • Layout algorithm for bundle suggestions — parallel cables along the same path get bundled visually.

These get resolved in the first design pass.

Refs

Description
Cable management — visual interface + SQLite inventory, integrates with mExDraw for diagrams.
Readme 378 KiB
Languages
Go 58.5%
JavaScript 34.7%
CSS 4.1%
HTML 2.4%
Dockerfile 0.2%