Parts
A part is the atomic unit in simple-plm — anything you buy, fabricate, or assemble that you want to track by a unique identifier. It can be a 10-kΩ resistor, a CNC’d bracket, a sub-assembly, or a finished product. Everything else (BOMs, ECOs, releases) refers back to parts.
Part numbers
Part numbers (PNs) are the primary key. They must match this shape:
^[A-Z0-9][A-Z0-9-]{2,49}$In plain English: start with an uppercase letter or digit, then 2–49 more uppercase letters, digits, or hyphens. So R-10K-0603, PCB-001, and ASSY-FINAL-V2 are all legal; pn-1 (lowercase) and R (too short) are not.
Revisions
Every part has a free-form revision string. Semantic conventions like A, B, A.1 work, as do date-based or commit-hash schemes. simple-plm doesn’t enforce a particular system — pick one with your team and stick to it.
Attributes and attachments
Beyond PN and revision, a part has:
description— short human label.attributes— free-form key/value map for things like value, tolerance, package, finish, weight.attachments— files inplm-data/parts/<pn>/attachments/(datasheets, 3-D models, drawings).
On disk
pn: R-10K-0603revision: Adescription: 10 kΩ resistor, 0603, 1%attributes: value: 10k tolerance: 1% package: '0603'