🤖 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. Клонировать проект
git clone http://185.160.137.213:3030/drholy/llm-chatbot
cd llm-chatbot
2. Установить зависимости (при локальной разработке backend)
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
3. Запустить сервисы в Docker
docker compose up -d --build
4. Получить первый SSL сертификат
./getcert.sh
📡 API endpoints (backend)
GET /history/{telegram_id}— История переписки пользователяPOST /chat/{telegram_id}— Отправка сообщения, получение ответа от LLMGET /profile— Профиль пользователяGET /chats— Список чатовGET /chats/{chat_id}/messages— Сообщения конкретного чатаPOST /chats/{chat_id}/messages— Добавить сообщение в чат
🧑💻 Режим разработки
Backend (FastAPI)
uvicorn app.main:app --reload
По умолчанию поднимается на http://localhost:8000.
Frontend (React)
cd frontend
npm install
npm run dev
Фронт доступен на http://localhost:5173.
🔐 SSL и Certbot
getcert.sh— скрипт для получения первого сертификата.- Certbot внутри контейнера автоматически продлевает сертификаты.
- Пути к действующим ключам:
/etc/letsencrypt/live/<your-domain>/fullchain.pem/etc/letsencrypt/live/<your-domain>/privkey.pem
📜 Лицензия
MIT © 2025 DrHoly
ToDo
- Доделать фронтенд - он полностью не юзабельный
- Доделать апишку и связать с фронтом
- Сделать интеграцию с SHM
Description
Languages
Python
54.9%
JavaScript
31.9%
Dockerfile
6%
Shell
4.8%
HTML
2.1%
Other
0.3%