docs: deduplicate silo server content in favor of silo-server/ authority

Replace duplicated server setup, deployment, migrations, and config
sections in guide/silo.md, architecture/silo-server.md, and
reference/configuration.md with cross-references to the authoritative
docs/src/silo-server/ directory.

Fix dead link in COMPONENTS.md (mods/silo/docs/ → docs/src/silo-server/).
This commit is contained in:
2026-02-10 08:07:21 -06:00
parent c9f6f9e02b
commit 77e5063b95
4 changed files with 16 additions and 120 deletions

View File

@@ -74,7 +74,7 @@ These appear in the File menu and "Origin Tools" toolbar across all workbenches
- Database Activity (4000ms) -- Real-time server event feed via SSE (Server-Sent Events) with automatic reconnection and exponential backoff
- Start Panel -- In-viewport landing page with recent files and Silo integration
**Server architecture:** Go REST API (38+ routes) + PostgreSQL + MinIO S3. Authentication via local (bcrypt), LDAP, or OIDC backends. SSE endpoint for real-time event streaming. See `mods/silo/docs/` for server documentation.
**Server architecture:** Go REST API (38+ routes) + PostgreSQL + MinIO S3. Authentication via local (bcrypt), LDAP, or OIDC backends. SSE endpoint for real-time event streaming. See `docs/src/silo-server/` for server documentation.
**LibreOffice Calc extension** ([silo-calc](https://git.kindred-systems.com/kindred/silo-calc.git)): BOM management, item creation, and AI-assisted descriptions via OpenRouter API. Shares the same Silo REST API and auth token system via the shared [silo-client](https://git.kindred-systems.com/kindred/silo-client.git) package.

View File

@@ -1,50 +1,11 @@
# Silo Server
The Silo server is a Go REST API that provides the backend for the Silo workbench. It manages part numbers, revisions, bills of materials, and file storage for engineering teams.
The Silo server architecture is documented in the dedicated [Silo Server](../silo-server/overview.md) section.
## Components
```
silo/
├── cmd/
│ ├── silo/ # CLI tool
│ └── silod/ # API server
├── internal/
│ ├── api/ # HTTP handlers, routes, templates
│ ├── config/ # Configuration loading
│ ├── db/ # PostgreSQL access
│ ├── migration/ # Property migration utilities
│ ├── partnum/ # Part number generation
│ ├── schema/ # YAML schema parsing
│ └── storage/ # MinIO file storage
├── migrations/ # Database migration SQL scripts
├── schemas/ # Part numbering schema definitions (YAML)
└── deployments/ # Docker Compose and systemd configs
```
## Stack
- **Go** REST API with 38+ routes
- **PostgreSQL** for metadata, revisions, BOM relationships
- **MinIO** (S3-compatible) for binary `.FCStd` file storage
- **LDAP / OIDC** for authentication
- **SSE** (Server-Sent Events) for real-time activity feed
## Key features
- **Configurable part number generation** via YAML schemas
- **Revision tracking** with append-only history
- **BOM management** with reference designators and alternates
- **Physical inventory** tracking with hierarchical locations
## Database migrations
Migrations live in `migrations/` as numbered SQL scripts (e.g., `001_initial.sql`). Apply them sequentially against the database:
```bash
psql -h psql.kindred.internal -U silo -d silo -f migrations/001_initial.sql
```
## Deployment
See `mods/silo/deployments/` for Docker Compose and systemd configurations. A typical deployment runs the Go server alongside PostgreSQL and MinIO containers.
- [Overview](../silo-server/overview.md) — Architecture, stack, and key features
- [Specification](../silo-server/SPECIFICATION.md) — Full API specification with 38+ routes
- [Configuration](../silo-server/CONFIGURATION.md) — YAML config reference
- [Deployment](../silo-server/DEPLOYMENT.md) — Docker Compose, systemd, production setup
- [Authentication](../silo-server/AUTH.md) — LDAP, OIDC, and local auth backends
- [Status System](../silo-server/STATUS.md) — Revision lifecycle states
- [Gap Analysis](../silo-server/GAP_ANALYSIS.md) — Current gaps and planned improvements

View File

@@ -102,72 +102,14 @@ Stored in `User parameter:BaseApp/Preferences/Mod/KindredSilo`:
| `SILO_API_URL` | `http://localhost:8080/api` | Override for server API endpoint |
| `SILO_PROJECTS_DIR` | `~/projects` | Override for local projects directory |
## Server setup
## Server
### Quick start
The Silo server is documented in detail in the [Silo Server](../silo-server/overview.md) section:
```bash
# Database setup (apply migrations sequentially)
psql -h psql.kindred.internal -U silo -d silo -f migrations/001_initial.sql
# ... through 010_item_extended_fields.sql
# Configure
cp config.example.yaml config.yaml
# Edit config.yaml with your database, MinIO, and auth settings
# Run server
go run ./cmd/silod
```
### Production deployment
Production configs live in `mods/silo/deployments/`:
```
deployments/
├── config.prod.yaml # Database, MinIO, auth settings
├── docker-compose.prod.yaml # Production container orchestration
├── docker-compose.yaml # Development Docker Compose
└── systemd/
├── silod.env.example # Service environment template
└── silod.service # systemd unit file
```
The systemd service runs as user `silo` with security hardening (`ProtectSystem=strict`, `NoNewPrivileges`, `PrivateTmp`). Config at `/etc/silo/config.yaml`, binary at `/opt/silo/bin/silod`.
### Server stack
- **Go** REST API with 38+ routes
- **PostgreSQL** for metadata, revisions, BOM relationships
- **MinIO** (S3-compatible) for binary `.FCStd` file storage
- **LDAP / OIDC** for authentication
- **SSE** (Server-Sent Events) for real-time activity feed
## Database migrations
Migrations live in `mods/silo/migrations/` as numbered SQL scripts:
| Migration | Purpose |
|-----------|---------|
| `001_initial.sql` | Core schema — items, revisions, properties |
| `002_sequence_by_name.sql` | Part number sequence generation |
| `003_remove_material.sql` | Property cleanup |
| `004_cad_sync_state.sql` | CAD file sync tracking |
| `005_property_schema_version.sql` | Schema versioning for properties |
| `006_project_tags.sql` | Project-to-item relationships |
| `007_revision_status.sql` | Revision lifecycle status tracking |
| `008_odoo_integration.sql` | ERP integration preparation |
| `009_auth.sql` | User authentication tables |
| `010_item_extended_fields.sql` | Extended item metadata |
Apply sequentially: `psql -f migrations/001_initial.sql`, then `002`, etc. There is no automated migration runner — apply manually against the database.
## Part numbering schemas
Part number generation is configured via YAML schemas in `mods/silo/schemas/`:
- `kindred-rd.yaml` — Primary R&D part numbering schema with category codes, sequence segments, and validation rules
- `kindred-locations.yaml` — Location hierarchy schema for physical inventory tracking
- [Configuration](../silo-server/CONFIGURATION.md) — YAML config, database, MinIO, auth settings
- [Deployment](../silo-server/DEPLOYMENT.md) — Docker Compose, systemd, production setup
- [Specification](../silo-server/SPECIFICATION.md) — Full API specification with 38+ routes
- [Authentication](../silo-server/AUTH.md) — LDAP, OIDC, and local auth backends
## Directory structure

View File

@@ -107,11 +107,4 @@ ccache is auto-detected by CMake at configure time. Clear with `ccache -C`.
## Silo server
Server configuration is defined in YAML. See `mods/silo/deployments/config.prod.yaml` for production settings and `mods/silo/config.example.yaml` for all available options.
Key sections:
- **database** — PostgreSQL connection string
- **storage** — MinIO endpoint, bucket, access keys
- **auth** — LDAP/OIDC provider settings
- **server** — Listen address, TLS, CORS
- **schemas** — Path to part numbering YAML schemas
Server configuration is documented in the dedicated [Silo Server Configuration](../silo-server/CONFIGURATION.md) reference, which covers all YAML config sections (database, storage, auth, server, schemas) with full option tables and examples.