Base Task Tracker — self-hosted task tracker для FerrPOINT: проекты, задачи, kanban, backlog, sprints, comments, attachments, notifications, reports и admin tooling. Это продуктовый MVP/hardening branch, а не hosted multi-tenant SaaS. Env-префикс:
TASKTRACKER_.
| Поле | Значение |
|---|---|
| Backend | Rust 2024 workspace: api, app, domain, infra, shared, server, cli, migration |
| Data | PostgreSQL 17, Redis 8 |
| Frontend | React 19, Vite, Tailwind CSS |
| API | openapi/openapi.json — canonical contract |
| Порты | repository-local: frontend 19877, backend 3456; Base umbrella: frontend 7722, API 7721, PostgreSQL/Redis — loopback 7723/7724 |
| Identity | Локальная auth + TOTP MFA (RFC 6238, recovery codes); в Base umbrella — бридж к central auth |
| License | FerrPOINT Proprietary Source-Available Evaluation License v1.0 |
| Сервис | Доступ | Описание |
|---|---|---|
| Frontend Docker | 19877 |
Nginx static frontend |
| Backend | 3456 |
API |
| PostgreSQL | internal compose network | DB, не публикуется наружу |
| Redis | internal compose network | cache, не публикуется наружу |
| Feature | Описание |
|---|---|
| Projects and issues | Projects, members, issue detail, comments, attachments и search. |
| Planning | Kanban boards, backlog, sprints и worklog. |
| Metadata | Priorities, labels, issue types, links, watchers, votes, components и versions. |
| Reporting | Velocity, burndown, cumulative flow и control chart. |
| Notifications | In-app center, SSE push, email digest worker и per-user delivery settings. |
| Administration | Users, instance settings, audit log, security headers, rate limits и Prometheus metrics. |
| CLI | task-tracker binary с JSON/table/compact output. |
| Area | Details |
|---|---|
| Projects and issues | Projects с kanban boards, backlog, dashboard и search; issue create/edit/status transitions, comments, attachments, priorities, labels, issue types, links, assignees и worklog. |
| Kanban and sprints | Drag-and-drop board columns, sprint planning и reports: velocity, burndown, cumulative flow и control chart. |
| Notifications | In-app center, unread counters, SSE NotificationCreated, hourly/daily email digest, email_frequency, disabled_event_types и notify_own_changes. |
| Watchers and votes | Watch subscriptions, issue votes и vote counters. |
| Custom fields | Project-level text, number, select, multi-select и date fields с required flags и issue-level values. |
| Components and versions | Project components, release/milestone versions, released/release_date, affected/fix version links. |
| Soft delete | deleted_at trash model, restore и permanent purge. |
| Search/admin | JQL search, admin panel, users, instance settings, audit log, security headers, rate limiting и Prometheus metrics. |
cp .env.example .env
# Задать POSTGRES_PASSWORD и TASKTRACKER_JWT_SECRET в .env
docker compose up --build -d
curl -fsS http://127.0.0.1:3456/api/v1/healthFrontend dev:
cd frontend
pnpm install
pnpm generate:api
pnpm devVite открывает http://localhost:5173 и проксирует API-вызовы на backend.
Port override:
BACKEND_PORT=3456
FRONTEND_PORT=19877После смены host-портов пересоздайте сервисы через docker compose up -d. Внутри compose-сети backend слушает 3456; настройки backend используют формат TASKTRACKER_SECTION__KEY, например TASKTRACKER_SERVER__CORS_ALLOWED_ORIGINS.
Развернутые материалы: docs/DEPLOYMENT.md, docs/ARCHITECTURE.md, docs/API.md, docs/CLI.md.
Скриншоты сняты Playwright на детерминированных данных при 1920x1080 в
default theme. Responsive QA, включая mobile и отсутствие горизонтального
переполнения, ведётся отдельно; маршруты, viewport и PNG-размеры перечислены в
screenshot manifest.
Отдельная приёмка общего Header на production-образе с настоящим SSO/API: responsive evidence. Она не заменяет каноническую галерею выше или финальный платформенный release gate.
Глобальный logout-тест в frontend/e2e/sso-live.spec.ts проверяет выход из всех
шести UI, включая меню аккаунта и серверную ссылку Workflow; отзыв браузерной
сессии не должен отзывать личный API-токен.
cd backend
cargo build --bin task-tracker
export TASKTRACKER_API_URL=http://localhost:3456/api/v1
export TASKTRACKER_TOKEN=<jwt_token>
./target/debug/task-tracker project list
./target/debug/task-tracker issue create --project-key DEMO --summary "Fix bug" --priority high
./target/debug/task-tracker issue list --project-key DEMO --output table
./target/debug/task-tracker board get --project-key DEMOCLI command documentation: docs/CLI.md. AI usage notes: cli/SKILL.md.
flowchart TD
UI[React SPA] --> API[Axum API]
CLI[task-tracker CLI] --> API
API --> App[Application services]
App --> Domain[Domain contracts]
App --> Repo[SeaORM repositories]
Repo --> DB[(PostgreSQL)]
API --> Redis[(Redis)]
App --> Notify[SSE + email digest]
API --> OpenAPI[OpenAPI contract]
OpenAPI --> Gen[Generated frontend client]
- PostgreSQL и Redis внутренние в Compose по умолчанию; публикуйте их только осознанно.
- Перед shared deployments замените все
[CHANGE_ME]значения и проверьте JWT, CORS, cookies, TLS и reverse-proxy настройки. - Сгенерированный frontend API-код обязан обновляться после изменений OpenAPI.
/api/v1/health— liveness; не выводите готовность БД, Redis, email или central-auth из успешного liveness-ответа.
| Проверка | Команда |
|---|---|
| README contract tests | python3 -m unittest scripts.tests.test_verify_readme -v |
| README assets и anchors | python3 scripts/verify_readme.py |
| Setup / dependencies | just setup / just db-up / just db-down |
| Backend dev | just backend-dev |
| Frontend dev | just frontend-dev |
| API codegen | just api-codegen |
| Backend workspace | cd backend && cargo fmt --all -- --check && cargo clippy --workspace --all-targets -- -D warnings && cargo test --workspace -- --test-threads=1 |
| Frontend | cd frontend && pnpm openapi:check && pnpm typecheck && pnpm test -- --run && pnpm lint && pnpm build |
| Browser E2E | cd frontend && pnpm test:e2e -- --project=chromium |
| Compose contract | docker compose config -q |
| Full gates | just gate / just test / just e2e |
GitHub Actions прогоняет docs-гейт, backend fmt/clippy/tests, OpenAPI drift и frontend gates (typecheck/tests/lint/build). Browser E2E и тяжёлые проверки запускаются локально по необходимости.
task-tracker/
├── backend/ # Rust workspace: api, app, domain, infra, shared, server, cli, migration
├── frontend/ # React SPA: pages, widgets, generated API client
├── cli/ # CLI binary notes и agent skill
├── openapi/ # canonical API contract
├── docs/ # architecture, deployment, testing, roadmap
└── docker-compose.yml
Общий UI и управляемый брендинг Base.
- docs/ARCHITECTURE.md — архитектура.
- docs/TZ.md — техническое задание.
- docs/DATA_MODEL.md — модель данных.
- docs/API.md — API notes.
- docs/SDLC_ROUTING_V1.md — owner API маршрутизации семи ролей и неизменяемый snapshot публикации; явный opt-in, не runtime admission.
- docs/SDLC_UI_V1.md — owner consent/readback и отдельный opt-in опубликованной policy, без редактора или native readiness.
- docs/ANALYST_TOOLS_QA.md — подготовка и проверка чтения источников, сохранения ТЗ и прав Analyst без Workflow/Fleet.
- docs/SDLC_RESERVATION_V1.md — prepared Analysis assignment, capacity/lease/CAS и readback; без dispatch или admission.
- docs/SDLC_CONFIGURATION_PREFLIGHT_V1.md — свежий owner readback Fleet для prepared Analysis, без native admission или запуска.
- docs/CHAT_CLARIFICATION_CONTRACT.md — SDLC Fleet DTOs, scoped paginated project directory, machine grants, PM reservation and ownership lease (not runtime admission).
- docs/CHAT_CLARIFICATION_VERIFICATION.md — Tracker verification and integration gaps.
- docs/DEPLOYMENT.md — deployment.
- docs/TESTING.md — проверки.
- docs/ROADMAP.md — roadmap.
- AGENTS.md — agent instructions.
Proprietary source-available. Not open source. Viewing/evaluation only.
Commercial, production, resale, redistribution, SaaS/hosting use require written license from FerrPOINT. См. LICENSE, NOTICE и THIRD_PARTY_NOTICES.md.
Нормативные термины и зависимости: PDLC и интеграция с Base.
Порядок для разработчика и ИИ: версия UI → check → поиск/карточка
→ один пример → интеграция → проверка поведения.
Из корня подготовленного React-продукта: pnpm --dir frontend exec pdlc-ui.
Полный каталог и запуск Storybook/API для offline-поиска не нужны. Общие
компоненты и брендинг исправляются в Base, данные и правила остаются у продукта.
Согласованная M:N-модель и план: реализация в работе. Source, tests, миграция, образы и live dev acceptance учитываются раздельно; документация цели не подтверждает установленную политику.
Долгие opt-in PostgreSQL/integration и браузерные E2E запускаются только через
явный workflow_dispatch существующего CI. В Actions выберите CI, ветку и
«Run workflow»; сохранены прежние адресные inputs, если они предусмотрены.
Обычные PR/push не запускают эти шаги. Быстрые unit, format, typecheck, lint
и build-проверки сохраняют прежние условия. Команды, assertions, зависимости
и timeouts долгих сценариев не меняются.
Долгий набор также можно запускать вручную штатными командами проекта. Успешный автоматический CI подтверждает быстрый набор; он не подтверждает пропущенную integration/live/E2E приёмку. Перед относящейся к данным или безопасности поставкой необходимый адресный manual gate остаётся обязательным.
Полный workspace-набор тоже ручной: автоматический backend выполняет короткие SDK/domain unit tests; прежний полный набор сохранён с manual predicate.
Private check/freeze/release сохраняет durable fences и прежнюю identity-историю;
unknown references не превращаются в zero. Настройки
TT_IDENTITY_LEGACY_ISSUER и TT_IDENTITY_DELETION_COORDINATOR_SUBJECTS требуют
операторской проверки deployment; примеры в .env.example закомментированы.
Human Admin memberships по умолчанию недоступны: только явный
TT_USER_MANAGEMENT_READ_ENABLED=true включает read-only проекцию.
TT_USER_MANAGEMENT_MACHINE_SUBJECTS исключает subjects, не выдаёт полномочий.
См. deployment и
контракт. Отдельный genuine owner curl не подтверждает
полный cohort восьми owners, Kubernetes или установленный rollout.