frontend/src/
frontend/src/ ├── routes/ pages under routes — /chat · /account ├── components/ UI primitives — shadcn on Base UI ├── features/ chat — assistant-ui wrapper + our layer ├── i18n/ locales — ru · en └── lib/ API client · SSE adapter · helpers
SSE answer stream and one conversation schema — and
draws them in the shell.
The web surface doesn't build the chat from scratch: the thread, history, streaming, and “new conversation” come from a mature library. Our domain is custom components inside its thread and a thin conversation-management layer around it, not a rewritten shell.
StreamingResponse · SSE) is consumed by a
ChatModelAdapter on the client — the library doesn't
dictate the backend, and the LLM keys stay with us.@base-ui/react, not the library's stock Radix theme:
the look stays house-style, and we don't pull in a second set of
primitives.