Parts
Inventory with default markup, vendor link, and reorder threshold. Low-stock parts surface on the dashboard.
Scaffolded, awaiting UI.
Data table parts exists in both D1 and IndexedDB and syncs
through /api/sync. To flesh out this screen, mirror the pattern
in src/routes/customers/: list page + [id]/ editor
using upsert() from $lib/db/mutations.