Remove all MinIO/S3 references from documentation and deployment configs. Silo now uses local filesystem storage exclusively. Updated files: - docs/CONFIGURATION.md: storage section now documents filesystem backend - docs/DEPLOYMENT.md: architecture diagram, external services, troubleshooting - docs/INSTALL.md: remove MinIO setup, update architecture diagrams - docs/SPECIFICATION.md: architecture, technology stack, file storage strategy - docs/STATUS.md: storage backend status - docs/GAP_ANALYSIS.md: file handling references - docs/ROADMAP.md: file storage appendix entries - deployments/config.prod.yaml: filesystem backend config - deployments/systemd/silod.env.example: remove MinIO credential vars
99 lines
4.6 KiB
Markdown
99 lines
4.6 KiB
Markdown
# Silo Development Status
|
|
|
|
**Last Updated:** 2026-02-08
|
|
|
|
---
|
|
|
|
## Implementation Status
|
|
|
|
### Core Systems
|
|
|
|
| Component | Status | Notes |
|
|
|-----------|--------|-------|
|
|
| PostgreSQL schema | Complete | 13 migrations applied |
|
|
| YAML schema parser | Complete | Supports enum, serial, constant, string segments |
|
|
| Part number generator | Complete | Scoped sequences, category-based format |
|
|
| API server (`silod`) | Complete | 78 REST endpoints via chi/v5 |
|
|
| CLI tool (`silo`) | Complete | Item registration and management |
|
|
| Filesystem file storage | Complete | Upload, download, checksums |
|
|
| Revision control | Complete | Append-only history, rollback, comparison, status/labels |
|
|
| Project management | Complete | CRUD, many-to-many item tagging |
|
|
| CSV import/export | Complete | Dry-run validation, template generation |
|
|
| ODS import/export | Complete | Items, BOMs, project sheets, templates |
|
|
| Multi-level BOM | Complete | Recursive expansion, where-used, CSV/ODS export/import |
|
|
| Authentication | Complete | Local (bcrypt), LDAP/FreeIPA, OIDC/Keycloak |
|
|
| Role-based access control | Complete | admin > editor > viewer hierarchy |
|
|
| API token management | Complete | SHA-256 hashed, bearer auth |
|
|
| Session management | Complete | PostgreSQL-backed (pgxstore), 24h lifetime |
|
|
| Audit logging | Complete | audit_log table, completeness scoring |
|
|
| CSRF protection | Complete | nosurf on web forms |
|
|
| Fuzzy search | Complete | sahilm/fuzzy library |
|
|
| Web UI | Complete | React SPA (Vite + TypeScript), 6 pages, Catppuccin Mocha theme |
|
|
| File attachments | Complete | Direct uploads, item file association, thumbnails |
|
|
| Odoo ERP integration | Partial | Config and sync-log CRUD functional; push/pull are stubs |
|
|
| Docker Compose | Complete | Dev and production configurations |
|
|
| Deployment scripts | Complete | setup-host, deploy, init-db, setup-ipa-nginx |
|
|
| systemd service | Complete | Unit file and environment template |
|
|
|
|
### Client Integrations
|
|
|
|
FreeCAD workbench and LibreOffice Calc extension are maintained in separate repositories ([silo-mod](https://git.kindred-systems.com/kindred/silo-mod), [silo-calc](https://git.kindred-systems.com/kindred/silo-calc)). The server provides the REST API and ODS endpoints consumed by those clients.
|
|
|
|
### Not Yet Implemented
|
|
|
|
| Feature | Notes |
|
|
|---------|-------|
|
|
| Location API endpoints | Database tables exist (`locations`, `inventory`), no REST handlers |
|
|
| Inventory API endpoints | Database tables exist, no REST handlers |
|
|
| Date segment type | Schema parser placeholder only |
|
|
| Part number format validation | API accepts but does not validate format on creation |
|
|
| Unit tests | 9 Go test files across api, db, ods, partnum, schema packages |
|
|
|
|
---
|
|
|
|
## Infrastructure
|
|
|
|
| Service | Host | Status |
|
|
|---------|------|--------|
|
|
| PostgreSQL | psql.example.internal:5432 | Running |
|
|
| File Storage | /opt/silo/data (filesystem) | Configured |
|
|
| Silo API | localhost:8080 | Builds successfully |
|
|
|
|
---
|
|
|
|
## Schema Status
|
|
|
|
The part numbering schema (`kindred-rd`) is at **version 3** using the `{category}-{sequence}` format (e.g., `F01-0001`). This replaced the earlier `{project}-{type}-{sequence}` format. Projects are now managed as many-to-many tags rather than being embedded in part numbers.
|
|
|
|
The schema defines 170 category codes across 10 groups:
|
|
- F01-F18: Fasteners
|
|
- C01-C17: Fluid Fittings
|
|
- R01-R44: Motion Components
|
|
- S01-S17: Structural Materials
|
|
- E01-E27: Electrical Components
|
|
- M01-M18: Mechanical Components
|
|
- T01-T08: Tooling and Fixtures
|
|
- A01-A07: Assemblies
|
|
- P01-P05: Purchased/Off-the-Shelf
|
|
- X01-X08: Custom Fabricated Parts
|
|
|
|
---
|
|
|
|
## Database Migrations
|
|
|
|
| Migration | Description |
|
|
|-----------|-------------|
|
|
| 001_initial.sql | Core schema (items, revisions, relationships, locations, inventory, sequences) |
|
|
| 002_sequence_by_name.sql | Sequence naming changes |
|
|
| 003_remove_material.sql | Schema cleanup |
|
|
| 004_cad_sync_state.sql | CAD synchronization state |
|
|
| 005_property_schema_version.sql | Property versioning framework |
|
|
| 006_project_tags.sql | Many-to-many project-item relationships |
|
|
| 007_revision_status.sql | Revision status and labels |
|
|
| 008_odoo_integration.sql | Odoo ERP integration tables (integrations, sync_log) |
|
|
| 009_auth.sql | Authentication system (users, api_tokens, sessions, audit_log, user tracking columns) |
|
|
| 010_item_extended_fields.sql | Extended item fields (sourcing_type, long_description) |
|
|
| 011_item_files.sql | Item file attachments (item_files table, thumbnail_key column) |
|
|
| 012_bom_source.sql | BOM entry source tracking |
|
|
| 013_move_cost_sourcing_to_props.sql | Move sourcing_link and standard_cost from item columns to revision properties |
|