Skip to content

Mojarung/bezumhack_2026

Repository files navigation

BezumHack 2026 Кейс Seamless Stack

🚀 Seamless — Единая платформа управления проектной разработкой

Команда Mojarung | BezumHack 2026 | Кейс от Astro Technologies

Seamless — интегрированная корпоративная платформа, объединяющая управление задачами (Kanban-core), документооборот (Docs-core) и CI/CD-интеграцию в единое рабочее пространство. Платформа решает ключевую боль компаний — разрозненность сервисов и ручное связывание информации между ними.


📋 Содержание


🎯 Проблема и решение

Выявленные боли

# Боль Корень проблемы Влияние
1 Разрозненная документация Документы в Google Docs/Drive не привязаны к задачам, нет версионирования, нет статусов Потеря контекста решений, невозможность отследить «почему»
2 Ручное планирование встреч Календарь — только инструмент согласования дат, встречи не связаны с задачами Суммаризация, записи, решения теряются
3 Слабая CI/CD интеграция Таск-трекер и репозиторий связаны поверхностно (только статусы PR) Нет сквозного цитирования документов, нет привязки к встречам
4 Информационные силосы Уведомления разбросаны по разным сервисам Пропущенные упоминания, дублирование информации

Наш подход к решению

┌─────────────────────────────────────────────────────────────────────┐
│                        SEAMLESS PLATFORM                            │
│                                                                     │
│  ┌──────────────┐   ┌──────────────┐   ┌────────────────────────┐  │
│  │  DOCS-CORE   │◄─►│ KANBAN-CORE  │◄─►│      CI/CD-CORE        │  │
│  │              │   │              │   │                        │  │
│  │ • Документы  │   │ • Задачи     │   │ • Ветки по задачам     │  │
│  │ • Версии     │   │ • Эпохи      │   │ • Статусы по PR        │  │
│  │ • Статусы    │   │ • Встречи    │   │ • Релизы               │  │
│  │ • Виджеты    │   │ • Доски      │   │ • Автосвязь документов │  │
│  └──────┬───────┘   └──────┬───────┘   └───────────┬────────────┘  │
│         │                  │                       │               │
│         └──────────────────┼───────────────────────┘               │
│                            │                                       │
│              ┌─────────────▼──────────────┐                        │
│              │  ЕДИНАЯ СИСТЕМА УВЕДОМЛЕНИЙ │                        │
│              │  + ОБЩИЙ КОНТЕКСТ СУЩНОСТЕЙ │                        │
│              └────────────────────────────┘                        │
└─────────────────────────────────────────────────────────────────────┘

Ключевая ценность: пользователь работает в одном окне. Контекст переносится между подсистемами автоматически — создание встречи из задачи наследует участников и документы, правка документа уведомляет исполнителя задачи, PR автоматически обновляет статус на доске.


🏗 Архитектура системы

Платформа построена по принципу модульного монорепо с единым docker-compose.yaml:

graph TB
    subgraph "Frontend Layer"
        NGINX["Nginx Reverse Proxy<br/>SSL / Load Balancing"]
        FE["Worklenz Frontend<br/>React + Vite + Ant Design"]
    end

    subgraph "Backend Layer"
        BE["Worklenz Backend<br/>Node.js + Express + Socket.IO"]
        MEET["Meeting Service<br/>WebRTC + Socket.IO"]
    end

    subgraph "AI Layer"
        RIVA["NVIDIA Riva ASR<br/>Speech-to-Text"]
        DS["DeepSeek V3<br/>Суммаризация"]
    end

    subgraph "Data Layer"
        PG[(PostgreSQL 15)]
        REDIS[(Redis 7)]
        MINIO[(MinIO<br/>S3-совместимое хранилище)]
    end

    NGINX --> FE
    NGINX --> BE
    NGINX --> MEET
    FE <-->|WebSocket| BE
    MEET --> RIVA
    RIVA --> DS
    BE --> PG
    BE --> REDIS
    BE --> MINIO
Loading

Сервисы в docker-compose

Сервис Образ Назначение
postgres PostgreSQL 15 Alpine Основная БД: проекты, задачи, документы, пользователи
redis Redis 7 Alpine Кэш сессий, real-time данные, очереди уведомлений
minio MinIO S3-совместимое хранилище файлов и вложений
backend Node.js (Express) REST API + WebSocket сервер для всех core-подсистем
frontend React (Vite) SPA с Ant Design, Kanban-доски, документы, уведомления
nginx Nginx 1.27 Реверс-прокси, SSL-терминация, маршрутизация
app (videoconference_ai) Node.js + Python + FFmpeg Видеоконференции с WebRTC, запись и AI-обработка
db-backup PostgreSQL Alpine Автоматические бэкапы БД каждые 24ч
certbot Certbot Автоматическое получение и обновление SSL-сертификатов

📦 Сущности и их связи

Основные сущности

erDiagram
    PROJECT ||--o{ EPOCH : "содержит"
    EPOCH ||--o{ TASK : "включает"
    EPOCH ||--o{ DOCUMENT : "имеет"
    TASK ||--o{ DOCUMENT : "привязан к"
    TASK ||--o{ MEETING : "инициирует"
    TASK ||--o{ COMMENT : "обсуждается в"
    TASK }o--o{ LABEL : "помечен"
    TASK }o--|| STATUS : "имеет"
    MEETING ||--o{ RECORDING : "записывается в"
    RECORDING ||--|| SUMMARY : "суммаризируется в"
    DOCUMENT ||--o{ VERSION : "версионируется"
    PROJECT }o--o{ USER : "участвуют"
    USER }o--|| ROLE : "имеет"
    TASK }o--o{ USER : "назначены"
    RELEASE ||--|| EPOCH : "завершает"
    NOTIFICATION }o--|| USER : "адресовано"
Loading

Расширенный список сущностей

Сущность Описание Ключевые связи
Проект Верхнеуровневая единица. Содержит все данные по заказу → Эпохи, Участники, Документы
Эпоха (Спринт) Временной отрезок с целями и дедлайнами → Задачи, Документы, Релиз
Задача Атомарная единица работы на Kanban-доске → Документы, Встречи, Комментарии, Подзадачи, Метки, Статус
Документ Структурированный текст с версионированием → Задачи, Эпоха, Версии, Статус документа
Встреча Видеоконференция с WebRTC → Задачи, Документы, Участники, Запись, Суммаризация
Запись встречи WebM-аудио/видео записи конференций → Встреча, Транскрипция, Суммаризация
Суммаризация AI-генерированный отчёт по встрече → Встреча, Задача (в комментариях)
Релиз Событие завершения Эпохи → Эпоха, CI/CD пайплайн
Уведомление Единое оповещение пользователя → Любая сущность (полиморфное)
Комментарий Обсуждение с цитированием → Задача, Документ (прямое цитирование)
Метка (Label) Классификатор задач → Задачи (many-to-many)
Статус Состояние задачи на доске → Задачи, Фазы

Роли и права доступа

Роль Docs-core Kanban-core CI/CD-core Область видимости
Заказчик 📖 Общие бизнес-документы Эпохи 📖 Свой проект (только просмотр) Один проект
Разработчик 📖📝 Технические документы своих задач 📖📝 Задачи, на которые назначен 📖 Свои PR и ветки Несколько проектов
Менеджер 📖📝 Все документы 📖📝🗑 Полный доступ ко всем задачам 📖📝 Релизы, обзор PR Все проекты

Важно: Docs-core разделён на области видимости:

  • 🟢 Общие документы Эпохи — доступны всем ролям проекта (бизнес-требования, общие цели)
  • 🟡 Технические документы задач — доступны менеджеру и назначенному разработчику
  • 🔴 Внутренние документы — доступны только менеджерам (бюджеты, контракты)

⚡ Реализованные оптимизации

1. Docs-core: Система документооборота

📂 Иерархия документов и распределение ролей

  • Древовидная структура: Документы организованы по проектам → эпохам → задачам
  • Контекстная видимость: Разделение на общие бизнес-документы (видны заказчику) и технические (только разработчик + менеджер)
  • Папки проектов с автоматическим наследованием прав доступа

📋 Версионирование (журналирование правок)

  • История изменений документов с возможностью отката
  • Привязка итерации к обоснованию: каждая версия может ссылаться на встречу или обсуждение, послужившее причиной изменения
  • Статусы документов: Черновик → На рассмотрении → Утверждён — процесс согласования через участников

🔌 Inline-виджеты и интеграции

  • Виджет статуса задачи внутри документа — актуальный статус задачи отображается без перехода в Kanban
  • Цитирование из документа в задачу — прямые ссылки с превью текста

2. Kanban-core: Управление задачами и встречами

📋 Kanban-доски

  • Drag-and-drop доски с колонками по статусам
  • Группировка по статусам, приоритетам, меткам, фазам
  • Фильтрация и поиск задач в реальном времени
  • Подзадачи и зависимости между задачами
  • Фазы (Эпохи/Спринты) с отслеживанием прогресса

📅 Двустороннее согласование встреч

  • Создание встречи из карточки задачи — автоматическое наследование участников, связанных документов и контекста задачи
  • Выбор тайм-слотов — организатор предлагает слоты, участники отмечают удобные; система автоматически определяет ближайшее совпадение
  • Автоматическая привязка к сущностям — встреча наследует все связи задачи (документы, эпоха, подзадачи)

🤖 Автоматическая суммаризация встреч

Пайплайн обработки видеоконференции:

Завершение встречи
        │
        ▼
┌─────────────────────┐
│  WebM → WAV (FFmpeg) │  Извлечение аудио, 16kHz моно
└─────────┬───────────┘
          ▼
┌─────────────────────┐
│  NVIDIA Riva ASR     │  Speech-to-Text транскрипция (gRPC API)
└─────────┬───────────┘
          ▼
┌─────────────────────┐
│  Форматирование чата │  Объединение аудио-транскрипции + текстового чата
└─────────┬───────────┘
          ▼
┌─────────────────────┐
│  DeepSeek V3 LLM     │  Структурированная Markdown-суммаризация:
│                       │  • Основные темы обсуждения
│                       │  • Список задач / Планы (Action Items)
│                       │  • Выжимка из чата
└─────────┬───────────┘
          ▼
   Результат привязан
   к карточке задачи

Ключевые особенности:

  • 🎥 Автоматическая запись — стелс-режим, один из участников автоматически назначается record-host
  • 💬 Сохранение чата — история сообщений с таймстемпами
  • 📝 Структурированный отчёт — Markdown-документ с выделением Action Items
  • 🔗 Привязка к задаче — суммаризация автоматически попадает в карточку задачи

3. Взаимная интеграция подсистем

Docs ↔ Kanban

  • Прямое цитирование документов в задачах — при добавлении цитаты из документа в карточку задачи текст отображается с превью и ссылкой на исходный документ
  • Обновления в документе → уведомление в задаче — если задача в статусе «Требуется информация», дополнение привязанного документа автоматически цитируется в обсуждении задачи

CI/CD ↔ Kanban

  • Автоматическое обновление статусов по PR — при открытии Pull Request с идентификатором задачи (TASK-XXX) статус на доске обновляется автоматически:
    • PR открыт → In Review
    • PR одобрен → Approved
    • PR вмержен → Done
  • Иерархия веток привязана к задачам: feature/TASK-123-название

Docs ↔ CI/CD

  • Мануальная привязка документов к задачам через UI
  • Автоматическая привязка по упоминаниям — при упоминании идентификатора задачи в документе создаётся двусторонняя связь

Система спринтов

  • Фазы/Эпохи отражаются и в Kanban (группировка задач), и в Docs (иерархия документов вокруг спринта)
  • Автоматический прогресс спринта — процент выполнения рассчитывается из статусов задач внутри эпохи

Единая система уведомлений

  • Полиморфные уведомления — упоминание в комментарии к документу и упоминание в обсуждении задачи приходят в одно место
  • Группировка по контексту — уведомления агрегируются по проекту и по типу сущности
  • Real-time через Socket.IO — мгновенная доставка через WebSocket

4. UX-оптимизации

  • Единое рабочее пространство — переключение между Kanban, документами и встречами без перехода между сервисами
  • Контекстные действия — кнопка «Создать встречу» прямо из карточки задачи
  • Сквозной поиск по всем сущностям
  • Табы внутри проекта — Tasks List / Board / Gantt / Insights в одном виде
  • Task Drawer — боковая панель задачи с полным контекстом: документы, комментарии, вложения, чеклисты
  • Drag-and-drop на Kanban-доске
  • Темная/светлая тема с плавным переключением

🛠 Технологический стек

Frontend

Технология Версия Назначение
React 18 UI-фреймворк
TypeScript 5 Типизация
Vite Сборка и HMR
Ant Design UI-библиотека компонентов
Redux Toolkit Управление состоянием
Socket.IO Client Real-time WebSocket
React Router v6 Маршрутизация (SPA)
i18next Интернационализация

Backend

Технология Версия Назначение
Node.js 20 Среда выполнения
Express HTTP-сервер и REST API
Socket.IO WebSocket для real-time обновлений
PostgreSQL 15 Основная БД
Redis 7 Кэш сессий, pub/sub
MinIO S3-совместимое хранилище файлов
Passport.js Аутентификация (JWT + сессии)

AI и видеоконференции

Технология Назначение
WebRTC Peer-to-peer видеоконференции
NVIDIA Riva ASR Speech-to-Text транскрипция
DeepSeek V3 (via NVIDIA API) LLM-суммаризация встреч
FFmpeg Конвертация аудио (WebM → WAV)
Python 3 Пайплайн AI-обработки

Инфраструктура

Технология Назначение
Docker + Docker Compose Контейнеризация и оркестрация
Nginx Реверс-прокси, SSL-терминация
Let's Encrypt (Certbot) Бесплатные SSL-сертификаты

🚀 Быстрый старт

Предварительные требования

Запуск

# 1. Клонировать репозиторий
git clone https://github.com/Mojarung/bezumhack_2026.git
cd bezumhack_2026

# 2. Скопировать и настроить переменные окружения
cp .env.example .env
# Отредактировать .env — указать пароли и NVIDIA_API_KEY

# 3. Автоматическая настройка (генерация секретов + SSL)
chmod +x manage.sh
./manage.sh
# Выбрать пункт меню "Auto Configure" → "Start Services"

# ИЛИ вручную:
docker compose --profile express up -d

Доступ

Сервис URL
Платформа https://localhost
Видеоконференции http://localhost:3000
MinIO Console http://localhost:9001

⚠️ При локальном запуске с self-signed SSL браузер покажет предупреждение — нажмите «Advanced» → «Proceed».

Управление

Платформа поставляется с интерактивным скриптом управления manage.sh:

./manage.sh

Доступные операции:

  • ▶️ Запуск / ⏹ остановка / 🔄 перезапуск сервисов
  • 📊 Просмотр статуса и логов каждого контейнера
  • 💾 Бэкап и восстановление данных
  • 🔧 Автоконфигурация окружения
  • 🔒 Настройка SSL (self-signed / Let's Encrypt)
  • 🏗 Сборка Docker-образов

📁 Структура репозитория

bezumhack_2026/
├── docker-compose.yaml          # Общий compose-файл (все сервисы)
├── .env.example                 # Шаблон переменных окружения
├── manage.sh                    # Интерактивный скрипт управления
│
├── worklenz-backend/            # Backend API (Node.js + Express)
│   ├── src/
│   │   ├── controllers/         # REST-контроллеры (задачи, проекты, документы...)
│   │   ├── routes/              # Маршрутизация API
│   │   ├── services/            # Бизнес-логика
│   │   ├── models/              # Модели данных
│   │   ├── socket.io/           # WebSocket-обработчики (real-time)
│   │   ├── middlewares/         # Auth, CORS, валидация
│   │   └── migrations/          # Миграции БД
│   ├── database/                # SQL-схемы и начальные данные
│   └── Dockerfile
│
├── worklenz-frontend/           # Frontend SPA (React + Vite)
│   ├── src/
│   │   ├── components/          # UI-компоненты (Kanban, Task Drawer, Gantt...)
│   │   ├── features/            # Redux-слайсы (enhanced-kanban, task-drawer...)
│   │   ├── pages/               # Страницы (проекты, настройки, отчёты)
│   │   ├── api/                 # API-клиенты
│   │   ├── hooks/               # React-хуки
│   │   └── services/            # Вспомогательные сервисы
│   └── Dockerfile
│
├── videoconference_ai/          # Сервис видеоконференций + AI
│   ├── backend/
│   │   ├── server.js            # WebRTC-сигналинг + Socket.IO
│   │   └── postprocess.py       # AI-пайплайн (Riva ASR → DeepSeek → Summary)
│   ├── frontend/
│   │   ├── index.html           # UI конференции
│   │   ├── main.js              # WebRTC-клиент, управление потоками
│   │   └── style.css            # Стили конференции
│   └── Dockerfile
│
├── nginx/                       # Конфигурация Nginx
│   ├── nginx.conf               # Основной конфиг
│   └── conf.d/worklenz.conf     # Виртуальный хост + проксирование
│
└── scripts/
    └── db-init-wrapper.sh       # Скрипт инициализации БД

🔑 Обоснование архитектурных решений

Почему открытый стек (self-hosted)?

Требование ТЗ: приоритет open-source и self-host. Все компоненты (PostgreSQL, Redis, MinIO, Nginx) развёртываются локально. AI-сервисы работают через API NVIDIA, но модель Riva ASR может быть развёрнута on-premise.

Почему монорепо + один docker-compose?

Минимальный порог входа для развёртывания. Один docker compose up поднимает всю платформу — от БД до AI-суммаризации. Нет необходимости настраивать 5–7 разных сервисов вручную.

Почему WebRTC, а не внешний сервис?

Видеоконференции — ключевая точка генерации контекста (записи, суммаризации). Встраивая WebRTC и AI-пайплайн в платформу, мы получаем seamless интеграцию: запись автоматически привязывается к задаче, суммаризация появляется в карточке.

Компромиссы

  • Корпоративный мессенджер — не реализован намеренно. Telegram/Slack значительно превосходят любой встроенный чат; нет смысла создавать ухудшенный аналог (как указано в ТЗ).
  • Автоматическое развёртывание кода — CI/CD-core фокусируется на методологии (иерархия веток, PR, релизы), а не на deployment pipelines.

📄 Лицензия

Проект разработан в рамках хакатона BezumHack 2026.


Seamless — когда все сервисы работают как один.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors