Skip to content

Zenkin/solder-map

Repository files navigation

SolderMap

Desktop application for preparing PCB assembly maps and tracking manual soldering progress.

The editor lets an operator:

  • create a project and attach TOP/BOTTOM PCB images;
  • mark component locations directly on the images;
  • group components and arrange them into assembly stages;
  • search and filter the component list;
  • track soldered components and overall progress;
  • record an independent component verification status, measured value, unit, and verification comment;
  • compare resistor and capacitor measurements with BOM values and percentage tolerances, including automatic unit conversion;
  • see verification marks on the board, filter components by verification state, and review the board-wide verification summary;
  • export all component verification results to printable PDF, UTF-8 CSV, or filterable Excel .xlsx;
  • import or update a CSV/TSV BOM with a preview of affected components, conflict confirmation, and selective reset of stale verification data;
  • import Pick and Place plus JSON/CSV recognition results directly, inspect automatic matches, and explicitly resolve uncertain or ambiguous candidates;
  • calibrate TOP and BOTTOM coordinates against board images, preview safe automatic placement changes, reuse unique placed components as control-point suggestions, and apply changes only after confirmation;
  • keep the ten latest verification backups and restore either the complete snapshot or selected reference designators;
  • keep the project data and source images together in a local folder.

Requirements

  • Node.js 20 LTS or newer;
  • npm 10 or newer.

Run from source

npm ci
npm run check
npm start

Application projects are stored in SolderMap Projects inside the current user's Documents directory. Each project contains a project.json file and its PCB images.

BOM format

Use a UTF-8 CSV, TSV, or semicolon-delimited text file. The required column is the reference designator; value, component type, percentage tolerance, and side are optional. Russian and English headers are recognized, for example:

Обозначение;Номинал;Тип;Допуск %;Сторона
R1 R2;100 Ом;Резистор;5;TOP
C1-C3;0,1 мкФ;Конденсатор;;BOTTOM

Grouped references and simple ranges are expanded into individual components. New components are marked as unplaced: select one in the list, enable Добавить элементы, and draw its area on the board. Duplicate designators must be corrected in the source BOM before the update can be applied.

Automatic placement

  1. Import the BOM so that the project contains the required reference designators.
  2. In Автосопоставление, choose the Pick and Place table.
  3. Choose the recognition result in JSON, CSV, TSV, or semicolon-delimited form. Coordinates and dimensions must describe the board in millimetres.
  4. Start matching. Exact results are accepted automatically; select a detected place explicitly for uncertain or ambiguous rows.
  5. Open calibration, verify or click at least three non-collinear control points for each side, calculate the transform, preview, and apply.

The advanced JSON-session button remains available for integrations that already generate the complete versioned exchange document.

Build

# Windows installer and portable executable
npm run build

# Linux tar.gz
npm run build:linux

# macOS dmg and zip (run on macOS)
npm run build:mac

Build artifacts are written to dist/. This directory is intentionally not tracked by Git.

Downloads

Ready-to-use builds are published as assets on the GitHub Releases page. Source code and generated installers are kept separate so that repository history remains compact and reproducible.

Project structure

index.html       Renderer markup
css/styles.css   Application styles
js/app.js        Renderer state and interactions
js/report.js     Verification report rows and CSV/XLSX serialization
js/bom.js        BOM parsing, update planning, backups and restoration
js/matching-*.js Automatic footprint matching, exchange format and result view
js/pick-and-place.js Placement-table adapter for expected matching footprints
js/recognition-import.js Recognition-result adapter for detected footprints
preload.js       Safe renderer-to-main IPC bridge
main.js          Electron lifecycle, filesystem and project IPC
assets/          Application icons

Specifications

Development workflow

The stable branch is main. Normal changes start from an issue, use a dedicated semantic branch, and are merged through a pull request. See AGENTS.md and .github/CODEX_WORKFLOW.md for the repository rules.

License

No open-source license has been granted yet. The source is publicly visible, but reuse and redistribution rights are not implied.

About

Desktop app for creating PCB assembly maps and tracking manual soldering progress.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages