# 🤖 ChatBot Platform (FastAPI + React + Docker) Проект представляет собой веб‑приложение для общения с LLM‑моделью. Архитектура объединяет **FastAPI (backend)**, **React (frontend SPA)**, **Nginx (reverse proxy)** и **Certbot (SSL)** для развёртывания под HTTPS. --- ## 📂 Структура проекта ``` ├── Dockerfile # Сборка backend ├── docker-compose.yml # Контейнеризация сервисов ├── requirements.txt # Python зависимости ├── README.md ├── app/ # Backend (FastAPI) │   ├── api.py # Роуты (REST + Bot API) │   ├── crud.py # CRUD операции │   ├── database.py # Подключение к БД (SQLAlchemy Async) │   ├── main.py # Точка входа FastAPI │   ├── models.py # SQLAlchemy модели │   ├── openrouter_client.py # LLM клиент к OpenRouter API │   └── schemas.py # Pydantic схемы ├── bot.py # Telegram‑бот (взаимодействие с backend) ├── frontend/ # Frontend (React + Vite) │   ├── index.html │   ├── src/ │   │   ├── App.jsx │   │   ├── api.js # Работа с backend API │   │   ├── components/ # UI компоненты (ChatList, ChatWindow и т.п.) │   │   ├── pages/ # Страницы (Home, ChatPage, UserProfile) │   │   └── styles/ # CSS стили │   ├── package.json │   └── vite.config.js ├── nginx/ │   ├── nginx.conf # Конфигурация reverse proxy │   └── certbot/ # Webroot для Let's Encrypt challenge # Скрипты управления ├── getcert.sh # Получение SSL сертификата (init cert) ├── install.sh # Установка и первый запуск ├── run.sh # Запуск сервиса └── stop.sh # Остановка сервисов ``` --- ## ⚙️ Основные возможности - 👤 Ведение профиля пользователя - 💬 Поддержка чат‑диалогов ( CRUD для чатов и сообщений ) - 🧠 Генерация ответов через **OpenRouter API** (LLM) - 🌐 Веб‑интерфейс (React SPA) для работы с чатами - 🤖 Поддержка **Telegram‑бота** (через `bot.py`) - 🔐 HTTPS через Let's Encrypt + Certbot --- ## 🛠 Установка и запуск ### 1. Клонировать проект ```bash git clone http://185.160.137.213:3030/drholy/llm-chatbot cd llm-chatbot ``` ### 2. Установить зависимости (при локальной разработке backend) ```bash python3 -m venv venv source venv/bin/activate pip install -r requirements.txt ``` ### 3. Запустить сервисы в Docker ```bash docker compose up -d --build ``` ### 4. Получить первый SSL сертификат ```bash ./getcert.sh ``` --- ## 📡 API endpoints (backend) - `GET /history/{telegram_id}` — История переписки пользователя - `POST /chat/{telegram_id}` — Отправка сообщения, получение ответа от LLM - `GET /profile` — Профиль пользователя - `GET /chats` — Список чатов - `GET /chats/{chat_id}/messages` — Сообщения конкретного чата - `POST /chats/{chat_id}/messages` — Добавить сообщение в чат --- ## 🧑‍💻 Режим разработки ### Backend (FastAPI) ```bash uvicorn app.main:app --reload ``` По умолчанию поднимается на `http://localhost:8000`. ### Frontend (React) ```bash cd frontend npm install npm run dev ``` Фронт доступен на `http://localhost:5173`. --- ## 🔐 SSL и Certbot - `getcert.sh` — скрипт для получения первого сертификата. - Certbot внутри контейнера автоматически продлевает сертификаты. - Пути к действующим ключам: - `/etc/letsencrypt/live//fullchain.pem` - `/etc/letsencrypt/live//privkey.pem` --- ## 📜 Лицензия MIT © 2025 DrHoly