Розробка форуму
Форум — платформа для асинхронного обговорення тем. На відміну від чатів (real-time) та соціальних мереж (стрічка постів), форуми організовують дискусії ієрархічно: розділ → тема → відповіді. Користувачі цінують форуми за можливість знайти потрібну тему через пошук через багато років.
Структура форуму
Форум
├── Розділ "Загальні питання"
│ ├── Тема "Як налаштувати nginx?" (15 відповідей)
│ └── Тема "Кращі практики CI/CD" (8 відповідей)
├── Розділ "Оголошення" (тільки читання для гостей)
│ └── ...
└── Розділ "Off-topic"
Вкладені підрозділи — опціональні, залежать від масштабу.
Вкладені коментарі vs плоскі відповіді
Два підходи до відображення відповідей:
- Плоский (Reddit-style): усі відповіді на одному рівні, сортування за датою або рейтингом. Простіше реалізувати.
- Вкладений (threaded): відповіді на конкретні коментарі відображаються як дочірні. Зручніше для довгих дискусій.
Зберігання вкладених коментарів — через Closure Table або Adjacency List:
-- Adjacency List
CREATE TABLE posts (
id, topic_id, parent_id REFERENCES posts(id),
author_id, body TEXT, created_at
);
Для глибокої вкладеності — використовуйте Nested Sets або Materialized Path (path: 1.5.12.44).
Дозволи доступу
Класичні ролі форуму: Гість (читання), Учасник (письмо), Модератор (редагування/видалення), Адміністратор. Додатково — прив'язані до розділу: модератор розділу X не модерує розділ Y.
Спеціальні групи: "Довірені користувачі" (без CAPTCHA), "Заблоковані" (тільки читання або повна блокада).
Модерація
- Скарги: кнопка "Поскаржитися" → черга для модераторів
- Захист від спаму: обмеження кількості постів за N хвилин від одного користувача
- Фільтрація спаму: Akismet для посилань + honeypot поля у формах
-
М'яке видалення: пости не видаляються фізично, позначаються як
deleted. Модератори можуть переглядати оригінальний текст. - Історія редагування: всі зміни посту зберігаються
Система репутації
- Лайки/дизлайки: впливають на сортування відповідей та репутацію автора
- Позначено як рішення: у режимі Q&A автор теми позначає найкращу відповідь (зелена галочка)
- Значки: досягнення за активність (перший пост, 100 відповідей, 10 "рішень")
Пошук
Пошук повнотекстового індексу по заголовкам та тілу повідомлень. Для форумів з великим історичним архівом (10+ років) — Elasticsearch з кириличною морфологією. Для нових проектів — PostgreSQL FTS достатньо до кількох мільйонів записів.
Підписки та сповіщення
- Підписка на тему — email при кожній новій відповіді або дайджест
- Підписка на розділ — сповіщення про нові теми
- @mention — сповіщення при згадуванні у пості
Графік проекту
MVP (розділи, теми, відповіді, дозволи, базова модерація): 6–8 тижнів. Повнофункціональний форум з вкладеними відповідями, репутацією, пошуком, мобільною версією: 3–4 місяці.







