diff --git a/docs/COMPONENTS.md b/docs/COMPONENTS.md index f9b23dc2e5..2e94d33301 100644 --- a/docs/COMPONENTS.md +++ b/docs/COMPONENTS.md @@ -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. diff --git a/docs/src/architecture/silo-server.md b/docs/src/architecture/silo-server.md index a8b29f1fcb..3b787f0bb4 100644 --- a/docs/src/architecture/silo-server.md +++ b/docs/src/architecture/silo-server.md @@ -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 diff --git a/docs/src/guide/silo.md b/docs/src/guide/silo.md index cc08c0c2aa..a88ad6710f 100644 --- a/docs/src/guide/silo.md +++ b/docs/src/guide/silo.md @@ -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 diff --git a/docs/src/reference/configuration.md b/docs/src/reference/configuration.md index 863a9bc6dc..43300197fc 100644 --- a/docs/src/reference/configuration.md +++ b/docs/src/reference/configuration.md @@ -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.