- JavaScript 73.6%
- HTML 23.8%
- CSS 2.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
New docs/cmms-bridge.js — inert unless window.PCBRETRACE_CONFIG is present
(only public/vendor/pcb-retrace/edit.php in the CMMS sets it). When set:
- injects "Save" / "Save & close" into the top bar; hides the standalone
import/export/share buttons.
- on boot, if config.loadUrl is set, pulls the project .pcbretrace.zip
from the CMMS and restores it silently (reuses processUrlImport).
- Save builds the whole-device ZIP in memory and POSTs it multipart to
the CMMS attachment endpoint (action/csrf/job_id/id/original_name/file,
same contract as circuit-edit.php); first save of a new board switches
to in-place updates.
studio.js:
- exportDeviceZIP() split into buildDeviceZIP(pass, forCmms) -> {blob,
filename} + a thin exportDeviceZIP() wrapper. forCmms adjusts the
embedded README + manifest.source.
- importFile/processZIP/processUrlImport take an opts arg; opts.silent
skips the restore/import confirms and re-throws instead of alert().
- init() awaits window.CMMS.init() at the end when present.
studio.html: loads cmms-bridge.js (defer, after studio.js).
Standalone pcb.etaras.com / local use is unchanged — every new path is
gated on the config object or opts.silent, both absent by default.
Dark mode: config.dark is recorded as data-theme="dark" but studio.html
is light-only today; CMMS-theme-follow is a later task.
|
||
| .github/workflows | ||
| docs | ||
| .gitattributes | ||
| .gitignore | ||
| .licenserc.yaml | ||
| CLA.md | ||
| LICENSE | ||
| README.md | ||
| THIRD_PARTY_LICENSES.md | ||
PCB ReTrace
Digitize, document, reverse engineer, and generate schematics for printed circuit boards entirely in your browser.
Launch PCB ReTrace | Examples Gallery
🔍 Overview
PCB ReTrace is a local-first web application designed for electronics engineers, repair technicians, and hardware hackers. It helps you move from a physical PCB to a digital representation using only photographs.
It runs 100% client-side using HTML5, Vanilla JS, and WebAssembly. No data is ever uploaded to a server.
✨ Key Features
- BOM Management: Map components on board photos to a digital Bill of Materials.
- Visual Inspection: View multiple board layers (Top/Bottom) simultaneously.
- Computer Vision Stitching: Automatically align close-up macro shots with wide-angle reference photos using OpenCV.
- X-Ray View: Manually stitch Top and Bottom images to trace vias and through-holes across layers.
- Netlist Tracing: Click-to-trace connectivity and export to KiCad compatible netlists (
.net) and SPICE netlists (.cir). - Schematic Generation (Schema ReTrace): Generate and route schematic diagrams from traced nets.
- Interactive Editing: Drag components, rotate them, and replace symbols.
- KiCad Libraries: Import
.kicad_symlibraries or ZIP archives to assign standard symbols to components. - KiCad Schematic Export: Export a generated schematic diagram to a KiCad compatible format (
.kicad_sch).
- Integrated Tools:
- Resistor Color Code Decoder (3-6 bands)
- Inductor Color Code Decoder
- Air-core Coil Calculator
- Privacy First: All data is stored in your browser's IndexedDB.
🚀 Getting Started
Online
Simply visit the GitHub Pages deployment.
Offline / Local Development
Since the project uses no build tools, you can run it directly from the source:
- Clone this repository:
git clone https://github.com/dev-lab/pcb-retrace.git - Navigate to the
docsfolder (where the source code lives):cd pcb-retrace/docs - Open
index.htmlin your browser.- Note: Some features (like Camera access) require a secure context (HTTPS) or
localhost. For best results, use a simple local server like Python'shttp.server.
- Note: Some features (like Camera access) require a secure context (HTTPS) or
🔗 Sharing & Deep Links
You can easily share a reverse-engineered device setup by hosting an exported ZIP file on a public server (like GitHub Pages) and creating a deep link.
Append ?import={URL} to the studio address:
https://pcb.etaras.com/studio.html?import=https://example.com/my-device.zip
(Note: The hosting server must support CORS by sending the Access-Control-Allow-Origin: * header).
📂 Project Structure
This project follows a "Build-Free" architecture. All source code is located in the /docs folder to support GitHub Pages directly.
docs/studio.html: The main application entry point.docs/schema.html: Standalone schematic generation and netlist visualization.docs/guide.html: PCB ReTrace User Guide.docs/resistor.html: Resistor Color Code Decoder.docs/inductor.html: Inductor Color Code Decoder.docs/coil.html: Air-core Coil Calculator.
⚖️ License & Commercial Use
This project is Dual Licensed:
- Open Source (AGPLv3): Ideal for hobbyists, educational use, and open-source projects. You are free to use and modify the software, provided that any modifications are also made open source under the same terms.
- Commercial License: For proprietary use, internal corporate deployment without copyleft restrictions, or integration into closed-source workflows, a commercial license is available.
Please see LICENSE for details.
For commercial licensing inquiries, please contact: Taras Greben taras.greben@gmail.com.
📦 Third-Party Libraries
- OpenCV.js: Computer Vision (Apache 2.0 License)
- zip.js: File compression/decompression (BSD 3-Clause License)
- WireBender: Schematic generation/routing library (AGPLv3 or Commercial)
- Adaptagrams: Used by WireBender via
libavoid,libcola, andlibvpsc(LGPL 2.1 or later) - KiCad symbol libraries: Redistributed symbol data bundled as
assets/kicad-symbols-master.zip
See THIRD_PARTY_LICENSES.md for full text.