app / adom-instapcb-quote
!

Not installable via adompkg

This app has no published release. adompkg install kyle/adom-instapcb-quote will not work until a maintainer publishes a tarball with install.sh and uninstall.sh.

See the publishing docs for the package.json schema and tarball layout required to ship this app.

adom-instapcb-quote

Generate InstaPCB draft quotes from gerbers + BOMs. Drop a customer's production-files zip in, get back a fully-priced, review-ready quote that plugs straight into the InstaPCB pricing calculator.

What it does

  1. Parses gerbers for board dimensions, layer count, SMT pad count (paste preferred, mask fallback with a review flag), and through-hole drill count. KiCad, Altium, and JLCPCB naming all supported.
  2. Parses BOMs format-agnostically (CSV/TSV/XLSX). Heuristic header detection + regex column mapping — recognizes MPN, Qty, Refs, Mfr, Value, Footprint, Fitted, plus JLCPCB's LCSC and Comment columns.
  3. Classifies Adom internal parts — rows with footprint ADOM_MEDIUM_PIN or ADOM_MEDIUM_CONTACT get hardcoded prices ($0.20/pin, $0.05/contact), no feeder fee (through-hole mechanical).
  4. Matches Adom-basic house parts against the team's shared reel catalog — exact MPN first, then characteristic match (LED color+package, resistor value+package, cap value+package+material).
  5. Resolves LCSC → MPN via adom-jlcpcb for rows that came in as JLCPCB codes.
  6. Prices on Mouser via adom-mouser. OOS or no-exact-match triggers a substitution search using the JLCPCB description (sanitized for Mouser's ASCII-only query API).
  7. Classifies mount type per row (TH / SMT pre-loaded / SMT + feeder) so the feeder fee is accurate.
  8. Cross-checks pad counts — BOM-derived (sum of pads_per_footprint × refs) vs gerber-derived (paste or mask flashes). Deltas > 5 flag for review.
  9. Outputs calculator-ready JSON — plugs into the InstaPCB pricing calculator via postMessage, or via copy-to-clipboard.

Architecture

   any user container                        service-instapcb-quote
   ──────────────────                        ──────────────────────
   adom-instapcb-quote build file.zip   ─┐
   adom-instapcb-quote app               ─┼──▶ HTTP /api/upload (port 8820)
   adom-instapcb-quote health            ─┘    + review UI + embedded calculator
                                                + shell-outs to adom-mouser / adom-jlcpcb
                                                + pipeline cache (LCSC + Mouser)
                                                + 2-min watchdog cron
                                                          │
                                                          ▼
                              https://instapcb-quote-9bhgpbf2ck18.adom.cloud

Shared service URL: https://instapcb-quote-9bhgpbf2ck18.adom.cloud

The service runs on a dedicated default-light container; any Adom container can hit the public URL to generate a quote without installing anything locally. The watchdog cron self-updates from origin/main every 2 min, so pushing to main auto-deploys.

Install

git clone https://github.com/adom-inc/adom-instapcb-quote.git ~/apps/adom-instapcb-quote
cd ~/apps/adom-instapcb-quote && npm install
sudo ln -sf "$PWD/bin/adom-instapcb-quote" /usr/local/bin/adom-instapcb-quote
adom-instapcb-quote install

This installs the CLI, deploys ~/.claude/skills/adom-instapcb-quote/SKILL.md + ~/.claude/skills/adom-instapcb-quote-build/SKILL.md, and registers bash completions.

Use

# Open the webview tab
adom-instapcb-quote app

# Headless — run the pipeline on files, get JSON
adom-instapcb-quote build gerbers.zip bom.csv --qty 10 --output quote.json

# Check a fixture
adom-instapcb-quote fixtures
adom-instapcb-quote build test/fixtures/Molecule_WS2812B_v1/*.zip test/fixtures/Molecule_WS2812B_v1/*.csv --mode cache

# Health check (local + shared service)
adom-instapcb-quote health

Source

Source at adom-inc/adom-instapcb-quote (private).

Built following the canonical adom-app-model: single private repo for both client + service code, shared service on its own default-light container, Tier B distribution — install on demand from the wiki when a trigger phrase matches.