| ```mermaid |
| flowchart TB |
| subgraph Routes["π Routes"] |
| R1["/ (Welcome)"] |
| R2["/chat/[id]"] |
| RL["+layout.svelte"] |
| end |
| |
| subgraph Components["π§© Components"] |
| C_Sidebar["ChatSidebar"] |
| C_Screen["ChatScreen"] |
| C_Form["ChatForm"] |
| C_Messages["ChatMessages"] |
| C_Message["ChatMessage"] |
| C_MessageEditForm["ChatMessageEditForm"] |
| C_ModelsSelector["ModelsSelector"] |
| C_Settings["ChatSettings"] |
| end |
| |
| subgraph Hooks["πͺ Hooks"] |
| H1["useModelChangeValidation"] |
| H2["useProcessingState"] |
| end |
| |
| subgraph Stores["ποΈ Stores"] |
| S1["chatStore<br/><i>Chat interactions & streaming</i>"] |
| S2["conversationsStore<br/><i>Conversation data & messages</i>"] |
| S3["modelsStore<br/><i>Model selection & loading</i>"] |
| S4["serverStore<br/><i>Server props & role detection</i>"] |
| S5["settingsStore<br/><i>User configuration</i>"] |
| end |
| |
| subgraph Services["βοΈ Services"] |
| SV1["ChatService"] |
| SV2["ModelsService"] |
| SV3["PropsService"] |
| SV4["DatabaseService"] |
| SV5["ParameterSyncService"] |
| end |
| |
| subgraph Storage["πΎ Storage"] |
| ST1["IndexedDB<br/><i>conversations, messages</i>"] |
| ST2["LocalStorage<br/><i>config, userOverrides</i>"] |
| end |
| |
| subgraph APIs["π llama-server API"] |
| API1["/v1/chat/completions"] |
| API2["/props"] |
| API3["/models/*"] |
| API4["/v1/models"] |
| end |
| |
| %% Routes β Components |
| R1 & R2 --> C_Screen |
| RL --> C_Sidebar |
| |
| %% Component hierarchy |
| C_Screen --> C_Form & C_Messages & C_Settings |
| C_Messages --> C_Message |
| C_Message --> C_MessageEditForm |
| C_Form & C_MessageEditForm --> C_ModelsSelector |
| |
| %% Components β Hooks β Stores |
| C_Form & C_Messages --> H1 & H2 |
| H1 --> S3 & S4 |
| H2 --> S1 & S5 |
| |
| %% Components β Stores |
| C_Screen --> S1 & S2 |
| C_Sidebar --> S2 |
| C_ModelsSelector --> S3 & S4 |
| C_Settings --> S5 |
| |
| %% Stores β Services |
| S1 --> SV1 & SV4 |
| S2 --> SV4 |
| S3 --> SV2 & SV3 |
| S4 --> SV3 |
| S5 --> SV5 |
| |
| %% Services β Storage |
| SV4 --> ST1 |
| SV5 --> ST2 |
| |
| %% Services β APIs |
| SV1 --> API1 |
| SV2 --> API3 & API4 |
| SV3 --> API2 |
| |
| %% Styling |
| classDef routeStyle fill:#e1f5fe,stroke:#01579b,stroke-width:2px |
| classDef componentStyle fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px |
| classDef hookStyle fill:#fff8e1,stroke:#ff8f00,stroke-width:2px |
| classDef storeStyle fill:#fff3e0,stroke:#e65100,stroke-width:2px |
| classDef serviceStyle fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px |
| classDef storageStyle fill:#fce4ec,stroke:#c2185b,stroke-width:2px |
| classDef apiStyle fill:#e3f2fd,stroke:#1565c0,stroke-width:2px |
| |
| class R1,R2,RL routeStyle |
| class C_Sidebar,C_Screen,C_Form,C_Messages,C_Message,C_MessageEditForm,C_ModelsSelector,C_Settings componentStyle |
| class H1,H2 hookStyle |
| class S1,S2,S3,S4,S5 storeStyle |
| class SV1,SV2,SV3,SV4,SV5 serviceStyle |
| class ST1,ST2 storageStyle |
| class API1,API2,API3,API4 apiStyle |
| ``` |
|
|