Find the way back together. PartTrail records teardown steps, photos, parts, quantities, and tray locations, then turns that trail into a strict reverse-order reassembly checklist.
Repairers routinely improvise screw maps with paper, trays, tape, and photos. The failure mode is painfully concrete: one wrong or forgotten fastener can delay reassembly or damage the device. PartTrail makes that temporary repair memory explicit and portable without turning it into a cloud account, inventory system, or generic ticket tracker.
- Capture teardown steps in the order they happen.
- Record any number of fasteners, components, cables, adhesives, or other parts per step.
- Keep raster photos in the project file, resized locally to a practical limit.
- Reload later from IndexedDB, or export/import one versioned JSON file.
- Reassemble in one legal order: the exact reverse of teardown.
- Generate a standalone, print-friendly HTML report with no scripts.
- Validate or package projects from the command line.
The problem research and GitHub similarity checks are documented in docs/research.md. PartTrail is repair memory, not repair advice: always use appropriate service information and verify the actual device.
Open the PartTrail web app. It has no login, telemetry, or runtime third-party requests. Workspace data stays in the current browser until you export it or clear that site's storage.
To run the same app locally:
git clone https://github.com/KanadeK/parttrail.git
cd parttrail
npm ci --ignore-scripts
npm run devThen visit http://127.0.0.1:4173/web/ and choose Use sample.
The GitHub Release contains an installable npm tarball:
npm install --global https://github.com/KanadeK/parttrail/releases/download/v0.1.0/parttrail-0.1.0.tgz
parttrail validate my-repair.parttrail.json
parttrail report my-repair.parttrail.json --out reassembly.html
parttrail demo --out parttrail-demoCLI exit codes are stable:
| Code | Meaning |
|---|---|
0 |
Command completed successfully |
1 |
The JSON parsed, but the PartTrail project is invalid |
2 |
Usage, JSON parsing, or filesystem failure |
Use parttrail validate PROJECT.json --json for machine-readable validation results.
Teardown: cover → battery → fan cable → fan
Reassembly: fan → fan cable → battery → cover
Array order is the source of truth. completedStepIds must be a prefix of that exact
reverse order, so imported data cannot claim an impossible partial reassembly state. Part
and step IDs are unique; every recorded part has a quantity and tray/location.
The portable schema and validation codes are described in docs/data-format.md. The JavaScript core is also exported for tools:
import { deriveReassemblyPlan, validateProject } from "parttrail";
import { renderProjectReport } from "parttrail/report";Requirements: Node.js 22 or 24 and Chrome Stable for the local browser test.
npm ci --ignore-scripts
npm run verifyverify runs static and metadata checks, 16 Node tests, the static build, a real CLI demo,
the Chromium end-to-end workflow, the dependency audit, and package inspection. The E2E
workflow uploads a real PNG, verifies JPEG conversion and IndexedDB persistence, exports
and reimports JSON, then completes the only legal next reassembly step.
Expected final lines include:
16 tests ... 16 pass
1 passed
found 0 vulnerabilities
parttrail-0.1.0.tgz
For focused commands and exact recovery steps, see docs/acceptance.md.
PartTrail v0.1 intentionally has no accounts, sync, device catalog, OCR, diagnosis, AI recognition, telemetry, or native app. Those would change the trust model and are not hidden behind placeholders. The architecture decision is recorded in docs/decisions/0001-local-static-architecture.md.
Small, test-backed changes are welcome. Read CONTRIBUTING.md before a pull request. Please report vulnerabilities through GitHub's private security advisory flow as described in SECURITY.md, not a public issue.
MIT © 2026 KanadeK.
