# Data Model: Frontend Navigation Redesign ## Plugin Configuration The `PluginConfig` model is extended to support backend-driven navigation. ```python class PluginConfig(BaseModel): """Pydantic model for plugin configuration.""" id: str = Field(..., description="Unique identifier for the plugin") name: str = Field(..., description="Human-readable name for the plugin") description: str = Field(..., description="Brief description of what the plugin does") version: str = Field(..., description="Version of the plugin") ui_route: Optional[str] = Field(None, description="Frontend route for the plugin UI") input_schema: Dict[str, Any] = Field(..., description="JSON schema for input parameters", alias="schema") ``` ### ui_route - **Type**: `Optional[str]` - **Description**: Specifies the client-side route (URL path) where the plugin's custom UI is hosted. - **Behavior**: - If `None` (default): The dashboard will open the plugin using the generic `DynamicForm` modal. - If set (e.g., `"/tools/mapper"`): The dashboard will navigate (`goto`) to this route when the plugin card is clicked. ## Backup Management (New) ### Backup Types ```typescript // frontend/src/types/backup.ts export interface BackupFile { name: string; // e.g., "prod-dashboard-export-2024.zip" path: string; // Relative path in storage size: number; // Bytes created_at: string; // ISO Date category: 'backups'; // Fixed category mime_type?: string; } export interface BackupState { isLoading: boolean; files: BackupFile[]; error: string | null; selectedBackup: BackupFile | null; }