forbes f5b03989ff feat(storage): add MinIO to filesystem migration tool
Standalone binary (cmd/migrate-storage) that downloads all files from
MinIO and writes them to the local filesystem for decommissioning MinIO.

Queries revision files, item file attachments, and item thumbnails from
the database, then downloads each from MinIO preserving the object key
structure as filesystem paths. Supports --dry-run, --verbose, atomic
writes via temp+rename, and idempotent re-runs (skips existing files
with matching size).
2026-02-18 14:12:32 -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, 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 — React SPA (Vite + TypeScript, Catppuccin Mocha theme) for item browsing, project management, schema editing, and audit
  • 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 and routes (78 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
│   └── testutil/          # Test helpers
├── web/                   # React SPA (Vite + TypeScript)
│   └── src/
│       ├── api/           # API client and type definitions
│       ├── components/    # Reusable UI components
│       ├── context/       # Auth context provider
│       ├── hooks/         # Custom React hooks
│       ├── pages/         # Page components (Items, Projects, Schemas, Settings, Audit, Login)
│       └── styles/        # Catppuccin Mocha theme and global styles
├── migrations/            # Database migrations (11 files)
├── schemas/               # Part numbering schemas (YAML)
├── deployments/           # Docker Compose and systemd configs
├── scripts/               # Deployment and setup scripts
└── docs/                  # Documentation

Quick Start

See the Installation Guide for complete setup instructions.

Docker Compose (quickest — includes PostgreSQL, MinIO, OpenLDAP, and Silo):

./scripts/setup-docker.sh
docker compose -f deployments/docker-compose.allinone.yaml up -d

Development (local Go + Docker services):

make docker-up    # Start PostgreSQL + MinIO in Docker
make run          # Run silo locally with Go

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/INSTALL.md Installation guide (Docker Compose and daemon)
docs/SPECIFICATION.md Full design specification and API reference
docs/STATUS.md Implementation status
docs/DEPLOYMENT.md Production deployment and operations guide
docs/CONFIGURATION.md Configuration reference (all config.yaml options)
docs/AUTH.md Authentication system design
docs/AUTH_USER_GUIDE.md User guide for login, tokens, and roles
docs/GAP_ANALYSIS.md Gap analysis and revision control roadmap
docs/COMPONENT_AUDIT.md Component audit tool design
ROADMAP.md Feature roadmap and SOLIDWORKS PDM comparison
frontend-spec.md React SPA frontend specification

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%