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:
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user