Add section 8.4 to SPECIFICATION.md describing the flat BOM flattening
and assembly cost roll-up endpoints with example request/response JSON.
- GET /api/items/{pn}/bom/flat — consolidated leaf parts with
rolled-up quantities and cycle detection
- GET /api/items/{pn}/bom/cost — per-line extended costs and total
assembly cost using standard_cost
Update endpoint count from 74 to 76 in SPECIFICATION.md and README.md.
Add checklist entries for flat BOM and assembly costing features.
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, flat BOM flattening, assembly costing, 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 (76 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.