diff --git a/README.md b/README.md new file mode 100644 index 0000000..d07cb56 --- /dev/null +++ b/README.md @@ -0,0 +1,130 @@ +# 🤖 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 \ No newline at end of file