Skip to content

Features

Routes

Route Page
/ Pages/Home.razor
/chat, /chat/{conversationId} Pages/Chat.razor -> renders ChatContainer

Components

Under Components/ (~19 Razor files):

  • Chat: ChatContainer, ModelSelector
  • Conversations: ConversationList, ConversationActions, ShareConversation
  • Messages: MessageList, MessageActions, MarkdownRenderer
  • Input: ChatInput
  • Settings: ChatSettingsModal
  • Layout/Nav: MainLayout, NavMenu, App, Routes, NotFoundPage
  • Loading skeletons: ConversationListSkeleton, MessageListSkeleton
  • Accessibility: ScreenReaderAnnouncements

Services (registered by AddAIChatServices())

Interface Implementation Role
IConversationService ConversationService Conversation CRUD/grouping
IMessageService MessageService Message persistence
IChatStateService ChatStateService UI/chat state
IMockAIService MockAIService In-process simulated streaming AI
IChatOrchestrator ChatOrchestrator Coordinates send/receive
IKeyboardShortcutService, IScreenReaderService, LanguageService UX/accessibility/localization

Mock AI

MockAIService generates pattern-based, streamed responses locally - there is no HTTP backend. Replace it with a real IChatClient/API integration when productionizing.

Markdown and theming

MarkdownRenderer uses Markdig. Styling is via ConnectSoft.Blazor.UIKit (1.0.163) with the chosen adapter (Flowbite default), Tailwind, and Flowbite JS. CSS builds from Styles/app.tailwind.css to wwwroot/css/app.css.

See also