- Settings (Site Title/Description, SEO, Configurable Blog "Home" segment)
## Architectural Decisions
- **Controller Pattern**: Use Laravel **Invokable Controllers** (Single Action Controllers) exclusively for all routing logic **within the CMS Core**.
- **Identity Provider**: CMS Authentication is exposed via a `SiteWeaverAuth` middleware (`sw:auth`).
- **Plugin System Interface**:
- Plugins are **Laravel Service Providers** stored in `plugins/`.
- Can register routes, navigation items, and add frontend features.
- **File System**: Leverages Laravel's Flysystem for Local/Cloud abstractions.
- **Frontend Interactivity**: Svelte components bundled via **Vite**.
- **Block Editor Structure**: **JSON-First Storage** (a flat, order-sensitive array of block objects with `type` and `data` properties).
- **Recommendation**: Implement **Server-Side Hydration (SSH)** for rendering. The Svelte editor outputs JSON on save. The PHP core then "hydrates" this JSON by matching block types to their respective Blade components to generate the "Cached Rendered HTML." If the cached version is missing or outdated, the core re-hydrates the JSON on-the-fly as a fallback.
- **Plugin Migration Strategy**: Plugins can specify a path to their migration files within their Service Provider. If no path is specified, the Core defaults to scanning `/plugins/{plugin-name}/migrations/`.
- **Site Routing & Reserved Slugs**:
- **Default Admin Segment**: `/loom` (configurable via `.env` or settings).
- **Priority**: System routes (Admin, API, Auth) always take precedence over dynamic Page slugs.