§01
Обзор
- Что это: сервер для совместного редактирования документов (имя пакета
tiptap_editor) — несколько пользователей правят один документ в реальном времени через CRDT (Yjs). Часть health-экосистемы healthcare-platform (вероятно, редактирование лабораторных/медицинских заключений; в схеме TipTap есть SVG-узлы для визуальных шаблонов). Персистентность в Postgres, синхронизация между инстансами через Redis. - Тип / статус / роль: api (real-time бэкенд) / maintained / solo — все 83 коммита за авторством Davron Yuldashev (две идентичности
davr@Davrons-MacBook-Pro.local82 +yul.davron.931 — обе его). - Период активности: 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.
- Интеграция через webhook →
extension-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.