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.
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:
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.