Персональный менеджер задач: быстрый захват без метаданных, автодетализация через локальную LLM (Ollama), дерево задач, MCP-интерфейс для ИИ-агентов.
Техническое задание: docs/TZ.md.
docs/ — техническое задание и прочая документация backend/ — FastAPI API + MCP (Python, uv) frontend/ — Vue 3 SPA (Vite, TypeScript)
Dev-БД (docker, порт 15432 — 5432/5433/5434 на машине заняты):
docker run -d --name gntodo-postgres -p 15432:5432 \ -e POSTGRES_USER=gntodo -e POSTGRES_PASSWORD=gntodo -e POSTGRES_DB=gntodo \ postgres:17-alpine
Миграции: cd backend && uv run alembic upgrade head.
Backend:
cd backend uv sync # создаст .venv, установит зависимости uv run uvicorn app.main:app --reload --port 8134
Frontend:
cd frontend npm install npm run dev # http://localhost:15134, /api и /auth проксируются на :8134
Состав стека: db (PostgreSQL 17) + api (FastAPI, миграции применяются при старте контейнера) + web (nginx: SPA-статика, прокси /api/, /auth/, /mcp/ на api). TLS терминирует внешний reverse-proxy на VPS — контейнер web слушает :80.
cp .env.example .env и заполнить:
GAUTH_CLIENT_ID/SECRET), GAUTH_REDIRECT_URI=https://<домен>/auth/callback — адрес callback регистрируется в auth.gnexus.space;SESSION_SECRET (произвольная длинная строка) и MCP_TOKEN (пусто — /mcp закрыт);OLLAMA_BASE_URL внешнего сервера Ollama (контейнера ollama в compose нет) и OLLAMA_MODEL (по умолчанию qwen3.5:2b-q4_K_M).docker compose up -d --build.WEB_PORT (по умолчанию 8135):
client_max_body_size 12m или больше (вложения до 10 МБ);/api/ и /mcp/ — без буферизации (backend шлёт X-Accel-Buffering: no, nginx его уважает; на других прокси отключить буферизацию явно) — иначе SSE-реактивность и MCP-агенты застрянут.Заметка: API работает в 1 воркер uvicorn — это осознанно (PKCE/state у gnexus-gauth хранятся в памяти процесса; несколько воркеров сломают OAuth-флоу).
M0 — каркас (репо, скелеты, SSO, деплой) → M1 MVP задач → M2 автодетализация → M3 структура → M4 прогнозы/бюджет/«3 варианта» → M5 MCP → M6 PWA → M7 Docker-упаковка.