|
|
||
|---|---|---|
| .forgejo/workflows | ||
| backend | ||
| frontend | ||
| venv | ||
| .env.example | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| docker-compose.yml | ||
| package-lock.json | ||
| README.md | ||
Atom AI
Веб‑платформа чата с выбором моделей (интерфейс в стиле Gemini).
Запуск через Docker Compose (всё в контейнерах)
В корне проекта создайте .env (можно скопировать из .env.example). Для деплоя на сервер укажите URL бэкенда:
# Локально можно не указывать (по умолчанию http://localhost:8000)
# NEXT_PUBLIC_API_URL=http://localhost:8000
# На сервере — публичный URL API:
# NEXT_PUBLIC_API_URL=http://157.22.181.73:8000
# Ключи для чата (опционально): OPENROUTER_API_KEY, ANTHROPIC_API_KEY, KIE_API_KEY
Затем:
docker compose up --build
- Frontend: http://localhost:4040
- Backend API: http://localhost:8000
- PostgreSQL: порт 5432 (внутренний, БД
corp_llm_chatсоздаётся автоматически).
Остановка: docker compose down. Данные БД сохраняются в volume pgdata.
Деплой на сервер (домен https://chat.atom-ai.atomgroup.dev)
-
CORS: в бэкенде уже добавлен origin
https://chat.atom-ai.atomgroup.dev. -
В
.envна сервере укажите URL API по тому же домену (иначе браузер может блокировать запросы с HTTPS-страницы на другой origin):NEXT_PUBLIC_API_URL=https://chat.atom-ai.atomgroup.dev/apiВариант с отдельным портом (если бэкенд отдаёте с :8000):
NEXT_PUBLIC_API_URL=https://chat.atom-ai.atomgroup.dev:8000 -
Обратный прокси (nginx/caddy/traefik) должен:
- отдавать фронт по
https://chat.atom-ai.atomgroup.dev/(прокси на контейнер :4040); - отдавать API по
https://chat.atom-ai.atomgroup.dev/api(прокси на контейнер :8000, путь/api→/к бэкенду).
Пример для nginx (в
location /api/):location /api/ { proxy_pass http://127.0.0.1:8000/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }Тогда запросы с фронта идут на
https://chat.atom-ai.atomgroup.dev/api/chatи попадают на бэкенд как/chat. - отдавать фронт по
-
Пересоберите фронтенд (значение
NEXT_PUBLIC_API_URLподставляется при сборке):docker compose up --build -dПосле этого откройте https://chat.atom-ai.atomgroup.dev
Стек
- Frontend: Next.js 16, React, Tailwind CSS (дизайн вдохновлён Gemini и компонентами из директории shadcn/ui).
- Backend: Python FastAPI.
- База данных: PostgreSQL (хранение сессий и истории сообщений для памяти диалога).
Запуск frontend
cd frontend
npm install
npm run dev
Интерфейс будет доступен на http://localhost:3000.
Запуск backend
cd backend
cp .env.example .env # при необходимости поправьте DATABASE_URL
pip install -r requirements.txt
# убедитесь, что Postgres запущен и создана БД corp_llm_chat
# createdb corp_llm_chat
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
API доступен на http://localhost:8000. Frontend обращается к эндпоинту POST /chat для отправки сообщений.