2025-09-16 18:12:16 +07:00
2025-09-14 17:23:13 +00:00
2025-09-14 17:15:48 +00:00
2025-09-14 17:15:48 +00:00
2025-09-14 17:23:13 +00:00
2025-09-14 17:23:13 +00:00
2025-09-14 17:15:48 +00:00
2025-09-14 17:15:48 +00:00
2025-09-14 17:15:48 +00:00
2025-09-14 17:15:48 +00:00
2025-09-14 17:15:48 +00:00
2025-09-16 18:12:16 +07:00
2025-09-14 17:15:48 +00:00
2025-09-14 17:15:48 +00:00
2025-09-14 17:15:48 +00:00

🤖 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} — Отправка сообщения, получение ответа от LLM
  • GET /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
No description provided
Readme 53 KiB
Languages
Python 54.9%
JavaScript 31.9%
Dockerfile 6%
Shell 4.8%
HTML 2.1%
Other 0.3%