Внутренний сервис управления работой команды: проекты, канбан-доски, задачи, участники, дедлайны и обсуждения.
app/— TSX-интерфейс доски. Уже доступны поиск, создание карточек и колонок, перемещение карточек между статусами, просмотр деталей, чек-лист и лента активности.backend/— Rust/Axum API. Есть health endpoint и первые маршруты для workspace и досок.backend/migrations/0001_core.sql— production-oriented модель PostgreSQL для пользователей, ролей, досок, задач, меток, чек-листов, комментариев и вложений.docker-compose.yml— локальные PostgreSQL и S3-совместимое хранилище MinIO для разработки.
Это модульный монолит: один Rust API с изолированными доменами auth, workspaces, boards, cards, files и realtime. Такое решение ускоряет разработку и сохраняет единые транзакции. При росте нагрузки самостоятельными кандидатами на выделение станут загрузка файлов, поиск и realtime collaboration.
Порядок карточек хранится как дробная позиция, а не как целое число. При drag-and-drop сервер вычисляет позицию между соседними карточками в короткой транзакции; это предотвращает массовые обновления и конфликтные перемещения.
- PostgreSQL-модель, миграции и сохранение досок, колонок, карточек, меток, дедлайнов, чек-листов, комментариев и вложений.
- Native drag-and-drop с серверным порядком карточек и optimistic UI.
- Real-time refresh через SSE: изменения в карточках, комментариях и чек-листах появляются в других открытых вкладках.
- Обязательный identity-слой с Argon2id-паролями, непрозрачными server-side сессиями, CSRF и инвайтами.
- Вложения не раздаются публично: API проверяет membership перед чтением каждого файла.
Локально используйте FLOWBOARD_COOKIE_SECURE=false, чтобы browser мог сохранять cookie на HTTP. Для общего окружения обязательно задайте FLOWBOARD_COOKIE_SECURE=true и FLOWBOARD_API_ORIGIN в точности равный origin веб-интерфейса. Первый зарегистрированный пользователь получает роль system owner; следующие аккаунты активируются только по account-invite. Membership создаётся отдельно внутри workspace.
API и веб-интерфейс лучше публиковать за одним HTTPS reverse proxy domain. Это сохраняет безопасные cookies, упрощает CORS и позволяет приватным превью вложений работать без выдачи публичных файловых URL. PostgreSQL и FLOWBOARD_UPLOAD_DIR должны жить на persistent volume.
Для SSH-ноды добавлены Dockerfile.api, Dockerfile.web, docker-compose.production.yml и конфигурация reverse proxy в deploy/nginx.conf. Compose публикует HTTP только на 127.0.0.1:8081; TLS должен завершаться вашим Caddy/Nginx/панелью хостинга. До первого запуска задайте сильный POSTGRES_PASSWORD и точный HTTPS FLOWBOARD_PUBLIC_ORIGIN; URL пароля не должен содержать неэкранированные специальные символы.
Подробная инструкция для первого production-развёртывания: docs/DEPLOYMENT_GUIDE.md.
Если 80/443 уже заняты существующим Caddy/Nginx и на сервере используется PM2, используйте отдельную инструкцию: docs/DEPLOY_PM2_CLOUDFLARE.md. Она не перезапускает другие PM2-сервисы и публикует Flowboard только через текущий HTTPS ingress.
Если доступ к Nginx отсутствует, используйте Cloudflare Tunnel без sudo: он публикует отдельный hostname без изменения входящих портов и reverse proxy.
S3/MinIO уже описан в docker-compose.yml, но текущий API хранит файлы в FLOWBOARD_UPLOAD_DIR; перенос на S3-presigned uploads оставлен отдельным масштабированием files-domain, а не маскируется как готовая функция.