← Commit history

Initial commit: app/wire-harness-designer

noah ·9b639cfddf ·2mo ago
2 files changed +173
README.mdadded+96
@@ -0,0 +1,96 @@+# Wire Harness Designer++Design a wire harness in the browser and export a professional, print-ready **PDF**+assembly drawing. Pick connectors, wire gauge, colour and stripe, sleeving, and+connector-to-connector lengths; get a live fishbone diagram with a wire schedule and a+title block. Click any wire or connector in the drawing to edit it. Save and reload the+whole harness as JSON.++![Wire Harness Designer](screenshots/app.png)++## Install++```bash+adom-wiki pkg install adom/wire-harness-designer+wire-harness-designer open        # starts the server and opens the webview+```++## What it does++- **Connectors** — type (Deutsch, Molex, JST, M12, D-Sub, ring terminals, flying leads, …),+  pin count, and where each sits: auto, an end, or a branch up/down.+- **Wires** — From/To connector + pin, AWG gauge (drives strand thickness), colour with an+  optional stripe, and a signal/notes label.+- **Lengths are per connector pair** — set `J1 ↔ J2` once and every wire on that pair uses it+  (the Segment Lengths section). Older files with per-wire lengths migrate automatically.+- **Wire wrap / sleeving** — braided, spiral, convoluted tube, harness tape, or heat shrink+  over a span of the trunk, each drawn with a distinct hatch and a callout.+- **Live diagram** — connector face views with numbered pins, a colourful wire ribbon along+  the trunk, sleeves, length dimensions, a wire schedule, and a standard title block.+- **Click-to-edit** — click any wire or connector in the drawing to change its colour, gauge,+  signal, length, type, pins, and more, inline.+- **Export PDF** — a real vector PDF (crisp at any zoom), multi-page when the schedule+  overflows. Sheet sizes: Tabloid, A3, Letter.+- **Save / Load JSON** — the whole harness is one `adom.wire-harness/v1` document, so a+  drawing can be regenerated, diffed, or version-controlled.++## The drawing++![Harness diagram, wire schedule, and title block](screenshots/drawing.png)++Everything you see — connectors, the wire ribbon, sleeves, the schedule, and the title block —+comes from one layout engine, so the on-screen preview matches the exported PDF exactly.++## Click any wire or connector to edit it++![Click-to-edit popover](screenshots/click-to-edit.png)++## CLI++```bash+wire-harness-designer open       # start the server (if needed) and open the webview  [default]+wire-harness-designer serve      # run the static server in the foreground+wire-harness-designer health     # is the server running?+wire-harness-designer --version+```++Default port is 8830 (override with `PORT`). Everything (preview, PDF, JSON) runs+client-side; the Node server only serves static files so the webview has a URL to load.++## How it is built++One layout engine emits a renderer-agnostic draw list that feeds both outputs:++```+public/harness-layout.js   model JSON -> draw list (PDF points, y-down)+public/render-svg.js       draw list -> SVG   (live preview + click targets)+public/render-pdf.js       draw list -> jsPDF (vector PDF export)+public/app.js              state, editors, click-to-edit, tooltips, toasts, save/load+server.js                  static file server (no app logic)+```++## Harness JSON++```jsonc+{+  "schema": "adom.wire-harness/v1",+  "meta": { "name": "Sensor Harness", "partNumber": "WH-1042", "revision": "A" },+  "connectors": [ { "id": "J1", "type": "Deutsch DT06-4S", "pins": 4, "side": "left" } ],+  "wires":      [ { "id": "W1", "from": { "conn": "J1", "pin": 1 },+                    "to": { "conn": "TB1", "pin": 1 }, "gauge": "16", "color": "RD",+                    "signal": "+12V" } ],+  "segments":   [ { "a": "J1", "b": "TB1", "length": 780 } ],+  "wraps":      [ { "type": "Braided sleeve", "start": 40, "end": 300 } ]+}+```++`samples/sensor-harness.json` is the built-in starter (also the **Sample** button).++## Drive API++For AI/CLI testing the app exposes `window.harnessApp`:+`getModel()`, `setModel(m)`, `exportPDF()`, `saveJSON()`, `pdfDataUrl()`, `toast(msg, type)`.++## License++MIT.
page.jsonadded+77
@@ -0,0 +1,77 @@+{+  "slug": "wire-harness-designer",+  "title": "Wire Harness Designer",+  "type": "app",+  "version": "1.0.0",+  "description": "Design wire harnesses in the browser and export a professional, print-ready PDF assembly drawing. Pick connectors, wire gauge, colour and stripe, sleeving, and connector-to-connector lengths; get a live fishbone diagram with a wire schedule and title block. Click any wire or connector in the drawing to edit it. Save and reload the whole harness as JSON.",+  "license": "MIT",+  "needs_sudo": false,+  "tags": [+    "wire-harness",+    "harness",+    "wiring",+    "connectors",+    "cable-assembly",+    "pdf",+    "electrical",+    "kicad",+    "webview",+    "open-source"+  ],+  "dependencies": {},+  "discovery_triggers": [+    "wire harness",+    "make a wire harness",+    "harness drawing",+    "cable assembly drawing",+    "wiring diagram",+    "connector pinout drawing",+    "wire schedule",+    "harness PDF",+    "design a cable",+    "point to point wiring",+    "open wire harness designer"+  ],+  "discovery_pitch": "Lay out a wire harness (connectors, gauge, colour, sleeving, lengths) and export a professional PDF assembly drawing with a wire schedule; save/reload as JSON.",+  "sample_prompts": [+    {+      "label": "Build a harness",+      "prompt": "design a wire harness with two connectors and export a PDF"+    },+    {+      "label": "From a wire list",+      "prompt": "make a harness drawing for this connector-to-connector wire list"+    },+    {+      "label": "Open the app",+      "prompt": "open the wire harness designer"+    }+  ],+  "scripts": {+    "install": "./install.sh",+    "uninstall": "./uninstall.sh",+    "serve": "node server.js"+  },+  "files": [+    "bin/**",+    "public/**",+    "samples/**",+    "server.js",+    "install.sh",+    "uninstall.sh",+    "package.json",+    "README.md",+    "SKILL.md",+    "LICENSE",+    "screenshots/**"+  ],+  "hero": {+    "type": "image",+    "path": "screenshots/hero.png"+  },+  "org": "adom",+  "author": {+    "name": "noah",+    "email": "[email protected]"+  }+}\ No newline at end of file