AI-платформа для общения с LLM, работы с историей чатов, мультимодальными вложениями и расширенной безопасностью.
Обзор • Возможности • Быстрый старт • Docker • Качество •
ReMind это full-stack AI-приложение с React/Vite frontend, Flask API, очередями на Celery и инфраструктурой под Docker Compose. Репозиторий собран не как демо-лендинг, а как рабочая база для продукта: сессии, шаринг чатов, авторизация, приватность, observability, OpenAPI, тесты и security-проверки уже лежат в одном месте.
Проект сейчас в статусе beta. Он включает:
- веб-интерфейс для диалога с AI-моделями;
- backend с SSE-стримингом, историей чатов и приватными/public share-ссылками;
- безопасную загрузку файлов и медиа-обработку;
- Telegram bot, использующий тот же сервисный слой;
- CI/CD-проверки, health/metrics endpoints и deployment через Docker Compose.
| Область | Что внутри |
|---|---|
| Web app | React 19, TypeScript, Vite 7, guest/auth режимы, мультиязычность, модальные окна, виджеты, медиа-просмотр |
| API | Flask, SSE-чат, auth/profile/settings, sessions, privacy export/delete, OpenAPI contract |
| Security | CSRF, rate limiting, secure uploads, security headers, user-agent validation, audit logging |
| AI layer | gemini, локальный echo для smoke-тестов, demo_image для проверки image pipeline |
| Background jobs | Redis + Celery worker |
| Operations | Nginx, Dockerfile, Docker Compose, health page, /metrics, GitHub Actions, security gate |
| Extensions | Telegram bot на aiogram |
- Потоковый AI-чат через
POST /chatс SSE-ответами. - История диалогов, список сессий, удаление и восстановление контекста.
- Публичные read-only ссылки на чаты через
/sessions/<id>/shareи/c/<public_id>. - Guest mode и auth mode в одном приложении.
- Регистрация, логин, профиль, настройки, избранное и Google OAuth.
- Безопасная загрузка файлов с валидацией имени, MIME-типа и содержимого.
- Перевод текста и синтез речи через отдельные API endpoints.
- Privacy flows: экспорт и удаление пользовательских данных.
- HTML/JSON health-check страница и Prometheus metrics.
- Telegram bot для работы с тем же chat service.
| Слой | Технологии |
|---|---|
| Frontend | React 19, TypeScript, Vite 7, i18next, Chart.js, D3, Mermaid, Nomnoml |
| Backend | Python 3.11, Flask, Flask-SQLAlchemy, Flask-Session, Authlib, Waitress, Gunicorn |
| AI / Media | Gemini API, Pillow, gTTS |
| Storage / Queue | SQLite или PostgreSQL, Redis, Celery |
| Infra | Docker, Docker Compose, Nginx |
| Quality | Ruff, Black, MyPy, Pytest, Vitest, Playwright, GitHub Actions |
graph TD
UI[React + Vite SPA] -->|HTTP / SSE| API[Flask API]
TG[Telegram Bot] --> SRV[Shared Services]
API --> SRV
API --> AUTH[Auth + Session Layer]
API --> FILES[Secure Upload Pipeline]
SRV --> AI[Gemini / Echo / Demo Image]
SRV --> DB[(SQLite / PostgreSQL)]
API --> REDIS[(Redis)]
REDIS --> CELERY[Celery Worker]
NGINX[Nginx] --> API
Ключевые точки входа:
app_factory.pyсобирает Flask-приложение и middleware/безопасность.routes/features/содержит feature-oriented API модули.services/иai_engine/держат историю, файлы, voice и adapters к моделям.src/это клиентская SPA.telegram_bot/использует тот же backend/service слой.
- Python
3.11 - Node.js
20+ - Redis
7+ - Git
GEMINI_API_KEYдля Gemini, перевода и основного AI-флоу
git clone https://github.com/ReNothingg/ReMind.git
cd ReMindPowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
npm ci
Copy-Item .env.example .envBash:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
npm ci
cp .env.example .envМинимум для локального старта:
SECRET_KEYREDIS_URLCELERY_BROKER_URLCELERY_RESULT_BACKENDGEMINI_API_KEYдля Gemini-сценариев
Если вы запускаете локальный Redis без пароля, удобно сразу заменить значения из .env.example на:
REDIS_URL=redis://localhost:6379/0
CELERY_BROKER_URL=redis://localhost:6379/1
CELERY_RESULT_BACKEND=redis://localhost:6379/1Если GEMINI_API_KEY пока нет, для локального smoke-теста UI и стриминга можно использовать модели echo и demo_image.
python main.pyBackend поднимается на http://127.0.0.1:5000.
npm run devVite dev server работает на http://127.0.0.1:5173 и проксирует API на backend.
Celery worker:
celery -A celery_worker.celery worker --loglevel=info --concurrency=2Telegram bot:
python -m telegram_botТребуется TELEGRAM_BOT_TOKEN.
Для полного production-like запуска в репозитории уже есть Dockerfile, docker-compose.yml и nginx.conf.
SECRET_KEYDB_PASSWORDREDIS_PASSWORDGEMINI_API_KEY
docker compose up --buildПоднимутся сервисы:
nginxappworkerdbredis
Это основной путь для проверки полной связки: Flask API, статика frontend-сборки, PostgreSQL, Redis и Celery.
| Переменная | Назначение |
|---|---|
SECRET_KEY |
Подпись сессий, CSRF и внутренние токены |
DATABASE_URL |
SQLite/PostgreSQL для приложения |
REDIS_URL |
Redis для сессий, rate limiting и части runtime-инфраструктуры |
CELERY_BROKER_URL, CELERY_RESULT_BACKEND |
Конфигурация фоновых задач |
GEMINI_API_KEY, GEMINI_MODEL_NAME |
Основной AI provider |
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET |
Google OAuth |
TURNSTILE_SITE_KEY, TURNSTILE_SECRET_KEY |
Cloudflare Turnstile |
BACKEND_URL |
Canonical backend URL для share links и redirect logic |
CORS_ORIGINS |
Разрешенные origin'ы |
ALLOW_GUEST_CHATS_SAVE |
Разрешает персистить гостевые чаты |
VALIDATE_USER_AGENT |
Включает проверку User-Agent паттернов |
TELEGRAM_BOT_TOKEN, TELEGRAM_BOT_DEFAULT_MODEL |
Telegram bot integration |
| Модель | Для чего нужна |
|---|---|
gemini |
Основной production-oriented сценарий |
echo |
Быстрый smoke-test UI, SSE и истории без внешнего AI |
demo_image |
Проверка image flow без внешнего генератора |
Это удобно для локальной разработки, когда нужно прогнать UX и transport layer, не упираясь в внешний API.
Полезные entrypoints:
POST /chatGET/POST /sessionsGET /sessions/<id>/historyPOST /sessions/<id>/shareGET /api/privacy/exportPOST /api/privacy/deleteGET /healthGET /metricsGET /openapi.json
OpenAPI-спека лежит в openapi/openapi.json, а TypeScript client генерируется в src/generated/openapi.ts через:
npm run openapi:checkРепозиторий уже оформлен как нормальная рабочая база, а не как один файл main.py.
Для полного локального quality-run установите dev-зависимости:
pip install -r requirements/dev.txt -c requirements/constraints.txtruff check .
black --check .
mypy app_factory.py routes utils services
pytest --cov=routes --cov=services --cov=utils --cov-report=term-missing --cov-fail-under=70
npm run typecheck
npm run openapi:check
npm run lint
npm run test:unit:coverage
npm run buildE2E:
npm run test:e2e:install
npm run test:e2e- сканирует tracked files на очевидные секреты;
- гоняет Ruff, Black, MyPy и Pytest;
- проверяет frontend typecheck, lint, unit tests и build;
- запускает Playwright e2e;
- прогоняет security pipeline через
pip-audit,npm audit,banditиsemgrep.
- Contributing Guide
- Security Policy
- Support Guide
- Code of Conduct
- Governance
- Pull Request Template
- Issue Templates
- CODEOWNERS
- Проект еще в
beta, поэтому UX и часть внутренней архитектуры продолжают меняться. - Без
GEMINI_API_KEYосновной AI-флоу будет ограничен, но локальныеechoиdemo_imageостаются полезны для smoke-тестов. - Для локальной разработки SQLite подходит нормально, но для shared/public deployment лучше использовать PostgreSQL + Redis.
Проект распространяется под GNU AGPLv3. Подробности в LICENSE.
