Phase 1 of frontend migration (epic #6, issue #7). Project setup (web/): - React 19, React Router 7, Vite 6, TypeScript 5.7 - Catppuccin Mocha theme CSS variables matching existing Go templates - Vite dev proxy to Go backend at :8080 for /api/*, /login, /logout, /auth/*, /health, /ready Shared infrastructure: - api/client.ts: typed fetch wrapper (get/post/put/del) with 401 redirect and credentials:include for session cookies - api/types.ts: TypeScript interfaces for all API response types (User, Item, Project, Schema, Revision, BOMEntry, Audit, Error) - context/AuthContext.tsx: AuthProvider calling GET /api/auth/me - hooks/useAuth.ts: useAuth() hook exposing user/loading/logout UI shell: - AppShell.tsx: header nav matching current Go template navbar (Items, Projects, Schemas, Audit, Settings) with role badges (admin=mauve, editor=blue, viewer=teal) and active tab highlighting - LoginPage: redirects to Go-served /login during transition - Placeholder pages: Items, Projects, Schemas fetch from API and display data in tables; Audit shows summary stats; Settings shows current user profile Go server changes: - routes.go: serve web/dist/ at /app/* with SPA index.html fallback (only activates when web/dist/ directory exists) - .gitignore: web/node_modules/, web/dist/ - Makefile: web-install, web-dev, web-build targets
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.