Home - bglen/wire-harness-core GitHub Wiki
Potential Product Names
harness.io, wireharness.io, router.io, Wireframe
One-sentence value proposition
- Addressing wire harness productivity issues.
- Supercharging wire harness design productivity.
- Design wire harnesses at lightning speed with a modern, cloud-free ECAD tool built for hardware pros.
- The fastest, most intuitive way to design wire harnessesβno cloud, no clutter.
- Harness design reimagined: intuitive, offline, and built for speed.
Product Description
-
A cross-platform wire harness design tool for building hardware much quicker. Availible as a web app and Windows/Mac/Linux native offline app.
-
Extremely intuitive for EEs familiar with ECAD workflows. The product follows a typical ECAD workflow, starting with netlist creation -> schematic layout -> schematic DRC -> 3D layout -> 3D DRC
-
Cloud-free: human-readable design files allow native git integration into user's organizations. These design files can be created and uploaded to the tool, but we never store user design data, which is appealing for sensitive customers.
-
Underlying code-based harness design API will allow future auto-generation of harness components, and allow existing LLMs with API knowledge to easily automate busywork associated with harness design
-
App integration with electronics distributors such as Octopart, Digikey, etc allow part data and harness component creation to be seamless (similar to RapidHarness). Local harness libraries are created. This will probably turn into the creation of a standard database of components that users can start off with.
-
Maintain a single source of truth with native git integration.
-
Detect, Identify, and resolve design issues with ECAD-like Design Rules
Product Aspects
To Do
- load and parse project file into memory
- Populate Feature List with detailed functionality to develop dev tasks from
- library.wh_lib File Definition
- outline how Library Components and their relationships are defined
- outline how Design Rules Check works
- create, place, delete connector objects
Done
- side-bar UI to allow basic functionality and tools
- basic grid scaling functionality in fabric.js
- Project File Formats
- define how Data Handling works
- wire-harness-electron builds from submodule wire-harness-core
- buildable Electron app via wire-harness-electron
- project.wh_proj File Schemas
- schematic.wh_sch File Schemas
Tech Stack
Wire Harness Core
- Editor UI: Shoelace Web Components
- Canvas: Fabric.js
- Project Files: JSON, YAML
- Project file validation: ajv, JSON Schema
- Immutable project data: Immer
Native App (Windows/Mac/Linux)
- Electron for cross platform native apps
- electron-vite as a built tool for Electron and easy JS package bundling
vite-plugin-static-copy
plugin to make Shoelace assets publicly accesable- wire-harness-core as a submodule
Web App
Front End
- Static HTML template with Bootstrap elements for everything outside the editor
- wire-harness-core as a submodule
Backend
- Python + Flask (login, file uploads, routing)
Directory Structure
wire-harness-core/
βββ src/
β βββ core/ # Core logic: schema validation, state, undo/redo, etc.
β β βββ state/
β β β βββ projectState.js # Manages project data, undo/redo, dirty tracking
β β β βββ history.js # Handles undo/redo stack logic
β β βββ io/
β β β βββ loader.js # Loads and parses .wh_proj files
β β β βββ saver.js # Save functionality (to disk or download blob)
β β β βββ schemaValidator.js # Uses AJV to validate against schemas
β β β βββ fileUtils.js # Helpers for file type detection, path handling, etc.
β β βββ schema/
β β βββ project.schema.json # JSON Schema for project.wh_proj
β β
β βββ ui/ # UI rendering logic (not tied to a specific framework)
β βββ components/
β β βββ LoadButton.js # File input and load handler
β β βββ SaveButton.js
β βββ canvas/ # Canvas/grid rendering logic (e.g., Fabric.js or WebGL)
β β βββ canvasManager.js
β βββ utils/
β βββ debounce.js
β
βββ README.md
βββ .gitignore