Розробка Wiki-системи
Wiki — це гіпертекстова база знань з відкритим (або обмеженим) редагуванням. На відміну від бази знань з явною ієрархією, Wiki будується на перехресних посиланнях між сторінками. Ключові особливості: [[Посилання-на-сторінку]] між статтями, історія змін з diff, система обговорень та гнучкі права редагування.
Навігація та структура
Wiki допускає кілька способів навігації:
- Ієрархія — традиційне дерево сторінок
- Граф — сторінки пов'язані посиланнями, візуалізація як граф знань
- Теги — поперечна класифікація
- Пошук — основний інструмент навігації
Для кожної Wiki-сторінки автоматично будується зворотні посилання — список сторінок, які посилаються на поточну. Це ключова функція для розуміння зв'язків між концепціями.
Розмітка та синтаксис
Стандартний варіант — Markdown з розширеннями:
-
[[Назва сторінки]]— Wiki-посилання, автостворення сторінки якщо не існує -
[[Сторінка|Відображуваний текст]]— посилання з псевдонімом -
![[Сторінка]]— вбудовування вмісту іншої сторінки (transclusion) -
#Тег— теги прямо в тексті
Парсинг Wiki-посилань: регулярний вираз обходить текст, знаходить [[...]], перевіряє наявність сторінки в базі, генерує <a> з існуючим посиланням або класом wiki-link-new для неіснуючих.
Історія змін та diff
Кожне збереження створює revision. Diff відображається рядок за рядком: алгоритм Myers diff або бібліотека diff (npm):
import { diffLines } from 'diff';
const changes = diffLines(oldContent, newContent);
changes.forEach(part => {
if (part.added) console.log('[+]', part.value);
if (part.removed) console.log('[-]', part.value);
});
Rollback — відновлення будь-якої версії з створенням нового revision (історія не видаляється).
Конфлікти при спільному редагуванні
Якщо два користувачі редагують одну сторінку одночасно:
- Pessimistic locking — сторінка блокується при відкритті редактора (просте рішення, але незручне)
- OT (Operational Transformation) — алгоритм злиття змін у реальному часі (Yjs, ShareDB)
- Conflict on save — останній, хто зберіг, "перемагає", першому показується diff конфлікту
Для більшості корпоративних Wiki достатньо попередження "сторінка редагується" + merge при конфлікті.
Права доступу
Моделі управління доступом:
- Публічна (модель Wikipedia): читають усі, редагують зареєстровані, откат вандалізму через історію
- Корпоративна: тільки співробітники, деякі розділи — тільки конкретні команди
- Змішана: публічні розділи + закриті для внутрішніх процесів
Шаблони сторінок
Для повторюваних типів статей — шаблони: "Опис проекту", "Зустріч", "Постмортем", "Інструкція". При створенні сторінки вибирається шаблон, структура заповнюється.
Інтеграції
- Git-backend — сторінки зберігаються в Git-репозиторії (Markdown-файли). Історія = Git commits. Редагування через веб або безпосередньо в Git.
- Slack/Telegram — сповіщення при зміні спостережуваних сторінок
- Confluence API — міграція існуючої бази
Терміни
MVP (сторінки з Wiki-посиланнями, історія, пошук, базові права): 6–8 тижнів. Повна Wiki з граф-навігацією, шаблонами, OT-редагуванням та інтеграціями: 3–4 місяці.







