Назад в архив
II. Клинический AI и медицинские платформыдополнительносолоклиент анонимизирован

Collaborative Document Editor (CRDT)

Бэкенд для редактора документов с совместным редактированием в реальном времени (Hocuspocus/Yjs CRDT + TipTap) внутри экосистемы healthcare-platform (health). Solo-проект: совместное редактирование, горизонтальное масштабирование через Redis, JWT-авторизация, кастомная схема TipTap.

Статус
поддерживается
Период
2025-01-22 → 2025-04-19
AI-сессий
Стек
Языки
TypeScript
Фреймворки · Инфра
HocuspocusYjsTipTapElysiaDrizzle ORMBullMQ
§01

Обзор

  • Что это: сервер для совместного редактирования документов (имя пакета tiptap_editor) — несколько пользователей правят один документ в реальном времени через CRDT (Yjs). Часть health-экосистемы healthcare-platform (вероятно, редактирование лабораторных/медицинских заключений; в схеме TipTap есть SVG-узлы для визуальных шаблонов). Персистентность в Postgres, синхронизация между инстансами через Redis.
  • Тип / статус / роль: api (real-time бэкенд) / maintained / solo — все 83 коммита за авторством Davron Yuldashev (две идентичности davr@Davrons-MacBook-Pro.local 82 + yul.davron.93 1 — обе его).
  • Период активности: 2025-01-22 → 2025-04-19 (~3 месяца), 83 коммита.
§02

Стек

  • Языки: TypeScript (рантайм Bun).
  • Real-time/collab: @hocuspocus/server 2.15 + расширения database / redis / webhook / logger, Yjs 13.6 (+ y-protocols, y-websocket, y-webrtc), TipTap 2.11 (core + starter-kit + collaboration), @hocuspocus/transformer (TiptapTransformer).
  • API/инфраструктура: Elysia (+ CORS) и Express, REST (rest.ts) + Swagger/OpenAPI, ws (websocket). BullMQ (queue + queue_processors), ioredis. JWT-авторизация через jose (+ jsonwebtoken) — jwtVerify с JWT_SECRET.
  • Данные: PostgreSQL (Drizzle ORM + pg/postgres, db/schema, таблица documents), Redis (синхронизация Hocuspocus между нодами + очереди).
  • Сборка: Bun, миграции drizzle-kit.
§03

Что реализовано

Solo, 83 коммита. Из кода:

  • Сервер Hocuspocus (hocuspocus.ts, 11.6 KB) с персистентностью документов в Postgres (load/store через @hocuspocus/extension-database), расширение Redis для масштабирования, расширения webhook/logger.
  • JWT-аутентификация на уровне Hocuspocus (jwtVerify, jose) — проверка токена при подключении к комнате документа.
  • Кастомная схема TipTap — собственные узлы CustomDiv, CustomSVG (блочный SVG с xmlns), кастомные атрибуты (class/style/id/onclick) — расширение редактора под доменные шаблоны (медицинские документы с графикой).
  • REST + Swagger (rest.ts, swagger/) — HTTP-поверхность поверх collab-сервера.
  • Очереди (queue.ts, queue_processors/, BullMQ) — фоновая обработка (экспорт/конвертация документов?).
§04

Технические челленджи

Подтверждено кодом (hocuspocus.ts, package.json).

  • Совместное редактирование в реальном времени на CRDT → Yjs + Hocuspocus: бесконфликтное слияние правок от нескольких пользователей без ручных operational transformations. Нетривиальная область (CRDT) — сильный инженерный сигнал.
  • Горизонтальное масштабирование collab-сервера@hocuspocus/extension-redis: апдейты Yjs синхронизируются между инстансами через Redis pub/sub (а не на одной ноде). Понимание распределённого real-time.
  • Персистентность Yjs-документаextension-database + Drizzle/Postgres: load/store бинарного состояния Yjs в таблицу documents.
  • Безопасность комнат → проверка JWT (jose) при подключении — редактировать документ могут только авторизованные пользователи.
  • Доменное расширение редактора → кастомные узлы TipTap (SVG/div с произвольными атрибутами) под медицинские шаблоны; TiptapTransformer для HTML↔Yjs.
  • Интеграция через webhookextension-webhook уведомляет внешние сервисы об изменениях документа (вероятно, бэкенд healthcare-platform).
§05

AI-разработка

  • Найдено сессий: 0 (совпадений по полному ключу нет). Период (начало 2025) предшествует активному использованию CC пользователем.
  • Что делалось с AI: данных нет.
  • Паттерны AI-воркфлоу: нет.
§06

Достижения и метрики

  • Полноценный real-time collab-бэкенд: CRDT + персистентность + масштабирование через Redis + JWT + очереди.
  • 83 коммита solo за ~3 месяца.
  • Кастомная схема редактора (узлы SVG/div) под медицинские документы.
  • Интеграции: Postgres, Redis, webhooks, Swagger API.
§07

Контрибьюторы

git shortlog · все ветки

  1. Dave9383
1 контрибьютор83 коммитов всего
Сейчас

Открыт к ролям Senior / Staff инженера и избранному фрилансу — продакшн-AI, платформы и full-stack разработка.

Связаться