> ## Documentation Index
> Fetch the complete documentation index at: https://docs.botmux.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Архитектура

> Системная архитектура BotMux и организация кода

BotMux — это монолитное Go-приложение, скомпилированное в единый бинарный файл со встроенным SPA.

## Исходные файлы

| Файл                   | Описание                                           |
| ---------------------- | -------------------------------------------------- |
| `main.go`              | Точка входа, разбор флагов, регистрация ботов      |
| `bot.go`               | Обёртка Telegram Bot API                           |
| `proxy.go`             | ProxyManager: опрос, пересылка, проверки состояния |
| `server.go`            | HTTP-сервер, эндпоинты REST API                    |
| `store.go`             | Слой хранения SQLite                               |
| `bridge.go`            | BridgeManager для мультипротокольных мостов        |
| `slack.go`             | Нативный мост протокола Slack                      |
| `auth.go`              | Аутентификация и авторизация                       |
| `llm.go`               | Маршрутизация сообщений на основе LLM              |
| `demo.go`              | Заполнение данных демо-режима                      |
| `templates/index.html` | SPA (чистый JS, встроен на этапе компиляции)       |

## Зависимости

| Пакет                                  | Назначение                         |
| -------------------------------------- | ---------------------------------- |
| `github.com/OvyFlash/telegram-bot-api` | Клиент Telegram Bot API            |
| `modernc.org/sqlite`                   | Чистый Go-драйвер SQLite (без CGO) |
| `github.com/skrashevich/go-webp`       | Конвертация стикеров WebP→PNG      |
| `golang.org/x/crypto/bcrypt`           | Хеширование паролей                |

## Ключевые решения проектирования

* **Нет различий между CLI и веб-ботами** — все боты функционально идентичны
* **Единый бинарный файл** — веб-интерфейс встроен через `go:embed`
* **Без CGO** — чистые Go-зависимости для простой кросс-компиляции
* **SQLite с режимом WAL** — простое и надёжное хранилище
