Zoe Forbes 43ff56fb60 feat(web): migrate Items page to React with UI improvements
Phase 2 of frontend migration (epic #6, issue #8).

Rebuild the Items page (4,243 lines of vanilla JS) as 16 React
components with full feature parity plus UI improvements.

UI improvements:
- Footer stats bar (28px fixed bottom) replacing top stat cards
- Compact row density (28-32px) with alternating background colors
- Right-click column configuration via reusable ContextMenu component
- Resizable horizontal/vertical split panel layout (persisted)
- In-pane CRUD forms replacing modal dialogs (Infor-style)

Components (web/src/components/items/):
- ItemTable: sortable columns, alternating rows, column config
- ItemsToolbar: search with scope (All/PN/Desc), filters, actions
- SplitPanel: drag-resizable horizontal/vertical container
- FooterStats: fixed bottom bar with reactive item counts
- ItemDetail: 5-tab detail pane (Main, Properties, Revisions, BOM,
  Where Used) with header actions
- MainTab: metadata, inline project tag editor, file download
- PropertiesTab: form/JSON dual-mode editor, save as new revision
- RevisionsTab: comparison diff, status management, rollback
- BOMTab: inline CRUD, cost calculations, CSV export
- WhereUsedTab: parent assemblies table
- CreateItemPane: in-pane form with schema category properties
- EditItemPane: in-pane edit form for basic fields
- DeleteItemPane: in-pane confirmation with warning
- ImportItemsPane: CSV upload with dry-run validation flow

Shared components:
- ContextMenu: positioned right-click menu with checkbox support

Hooks:
- useItems: items fetching with search, filters, pagination, debounce
- useLocalStorage: typed localStorage state hook

Extended api/types.ts with request/response types for search, BOM,
revisions, CSV import, schema properties, and revision comparison.
2026-02-06 17:21:18 -06:00
2026-01-29 13:10:12 -06:00
2026-01-29 13:10:12 -06:00
2026-01-29 13:10:12 -06:00

Kindred Silo

Item database and part management system.

Overview

Kindred Silo is an R&D-oriented item database with:

  • Configurable part number generation via YAML schemas
  • Revision tracking with append-only history, rollback, comparison, and status labels
  • BOM management with multi-level expansion, where-used queries, CSV/ODS export
  • Authentication with local (bcrypt), LDAP/FreeIPA, and OIDC/Keycloak backends
  • Role-based access control (admin > editor > viewer) with API tokens and sessions
  • ODS import/export for items, BOMs, and project sheets
  • Audit/completeness scoring with weighted per-category property validation
  • Web UI with htmx-based item browser, project management, and schema editing
  • CAD integration via REST API (silo-mod, silo-calc)
  • Physical inventory tracking with hierarchical locations (schema ready)

Components

silo/
├── cmd/
│   ├── silo/          # CLI tool
│   └── silod/         # API server
├── internal/
│   ├── api/           # HTTP handlers, routes, templates (74 endpoints)
│   ├── auth/          # Authentication (local, LDAP, OIDC)
│   ├── config/        # Configuration loading
│   ├── db/            # PostgreSQL repositories
│   ├── migration/     # Property migration utilities
│   ├── odoo/          # Odoo ERP integration
│   ├── ods/           # ODS spreadsheet library
│   ├── partnum/       # Part number generation
│   ├── schema/        # YAML schema parsing
│   └── storage/       # MinIO file storage
├── migrations/        # Database migrations (10 files)
├── schemas/           # Part numbering schemas (YAML)
├── deployments/       # Docker Compose and systemd configs
├── scripts/           # Deployment and setup scripts
└── docs/              # Documentation

Quick Start

# Docker Compose (quickest)
cp config.example.yaml config.yaml
# Edit config.yaml with your database, MinIO, and auth settings
make docker-up

# Or manual setup
psql -h localhost -U silo -d silo -f migrations/*.sql
go run ./cmd/silod -config config.yaml

When auth is enabled, a default admin account is created on first startup using the credentials in config.yaml under auth.local.default_admin_username and auth.local.default_admin_password.

# CLI usage
go run ./cmd/silo register --schema kindred-rd --category F01

Configuration

See config.example.yaml for all options.

Authentication

Silo supports three authentication backends, configured in config.yaml:

Backend Description
Local Built-in accounts with bcrypt passwords
LDAP FreeIPA / Active Directory integration
OIDC Keycloak / OpenID Connect providers

Roles: admin (full access) > editor (create/modify items) > viewer (read-only).

API tokens provide programmatic access for scripts and CAD clients. Set auth.enabled: false for development without authentication.

See docs/AUTH.md for full details.

Client Integrations

CAD and spreadsheet integrations are maintained in separate repositories:

  • Kindred Create / FreeCAD workbench -- silo-mod
  • LibreOffice Calc extension -- silo-calc

The server provides the REST API and ODS endpoints consumed by these clients.

Documentation

Document Description
docs/AUTH.md Authentication system design
docs/AUTH_USER_GUIDE.md User guide for login, tokens, and roles
docs/DEPLOYMENT.md Production deployment guide
docs/SPECIFICATION.md Full design specification and API reference
docs/STATUS.md Implementation status
ROADMAP.md Feature roadmap and gap analysis

License

MIT License - Copyright (c) 2026 Kindred Systems LLC

See LICENSE for details.

Description
No description provided
Readme MIT 3.6 MiB
Languages
Go 68.5%
TypeScript 25.5%
Shell 2.7%
PLpgSQL 2.4%
Makefile 0.5%
Other 0.3%