ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Build a Dropbox Paper-Style Collaborative Editor with Next.js and Velt๐Ÿ’ฅ
Dev.toDev.to
Frontend

Velt SDK ๊ธฐ๋ฐ˜ Real-time Collaboration ๋ ˆ์ด์–ด ๊ตฌ์ถ•์„ ํ†ตํ•œ ๊ฐœ๋ฐœ ๊ณต์ˆ˜ ๋‹จ์ถ•

Build a Dropbox Paper-Style Collaborative Editor with Next.js and Velt๐Ÿ’ฅ

Astrodevil2026๋…„ 5์›” 21์ผ15๋ถ„intermediate

Context

์‹ค์‹œ๊ฐ„ ํ˜‘์—… ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ๋ฐฑ์—”๋“œ ์ธํ”„๋ผ ๊ตฌ์ถ• ์‹œ ๋ฐœ์ƒํ•˜๋Š” Conflict Resolution ๋ฐ ๋™๊ธฐํ™” ๋กœ์ง ์„ค๊ณ„์˜ ๋ณต์žก์„ฑ ์กด์žฌ. ๊ธฐ์กด์˜ ์™ธ๋ถ€ ํˆด ์˜์กด ๋ฐฉ์‹์€ ์ปจํ…์ŠคํŠธ ๋‹จ์ ˆ๋กœ ์ธํ•œ ์‚ฌ์šฉ์ž ์ดํƒˆ๊ณผ ๋‚ฎ์€ ์ธ๊ฒŒ์ด์ง€๋จผํŠธ ์œ ๋ฐœ.

Technical Solution

  • TipTap Editor์™€ Velt SDK ํ†ตํ•ฉ์„ ํ†ตํ•œ ProseMirror ๊ธฐ๋ฐ˜์˜ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ Rich Text ํŽธ์ง‘ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • VeltProvider๋ฅผ Root Layout์— ๋ฐฐ์น˜ํ•˜์—ฌ ์ „์—ญ Collaboration State ๋ฐ Real-time Connection ์œ ์ง€
  • Velt TipTap Extension ๋“ฑ๋ก์„ ํ†ตํ•œ ์„ ํƒ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ Contextual Comments ์•ต์ปค๋ง ๊ตฌํ˜„
  • Zustand ๊ธฐ๋ฐ˜์˜ User Switching ๋กœ์ง์„ ํ™œ์šฉํ•œ Presence State์˜ ์ฆ‰๊ฐ์ ์ธ ๋™๊ธฐํ™” ์ฒ˜๋ฆฌ
  • Velt SDK์˜ ์ถ”์ƒํ™”๋œ API๋ฅผ ํ†ตํ•œ Comment-Sidebar-Notification ๊ฐ„์˜ ๋‹จ๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ํ๋ฆ„ ๋ฐ ์ƒํƒœ ๋™๊ธฐํ™” ์„ค๊ณ„
  • App Router ๊ตฌ์กฐ ๋‚ด์—์„œ Provider ๊ณ„์ธตํ™”๋ฅผ ํ†ตํ•œ Theme ๋ฐ Collaboration ์ปจํ…์ŠคํŠธ์˜ ๋ถ„๋ฆฌ ๋ฐ ๊ด€๋ฆฌ

1. ์‹ค์‹œ๊ฐ„ ๋™๊ธฐํ™” ํ•„์š” ์‹œ Conflict Resolution ๋กœ์ง ์ง์ ‘ ๊ตฌํ˜„ ๋Œ€์‹  ๊ฒ€์ฆ๋œ Collaboration SDK ๊ฒ€ํ† 

2. Rich Text Editor ๋„์ž… ์‹œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ Plugin ์•„ํ‚คํ…์ฒ˜(์˜ˆ: TipTap)๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ธฐ๋Šฅ ํ™•์žฅ์„ฑ ํ™•๋ณด

3. ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ์™€ SDK Provider์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜์—ฌ ์ƒํƒœ ์ „ํŒŒ ํšจ์œจ ์ตœ์ ํ™”

์›๋ฌธ ์ฝ๊ธฐ