-
Notifications
You must be signed in to change notification settings - Fork 4
Concept
- Цели проекта
- Используемые техологии
- Структура проекта
- Основные понятия
- Анонимность
- Доска
- Ветка обсуждения
- Комментарий
- Bump и sage
- Лента доски
- Ветка обсуждения
- Форма добавления комментария
- Форма удаления комментария
- Модераторские опции
- Основные понятия
- Объектная модель
- Продуктовые особенности
- Picture related
- Песочница
- Тематические часы
Проект стремится быть моноязыковым. Клиентские и серверные скрипты пишутся на Javascript. Документ-ориентированная база данных MongoDB.
Архитектура проекта целиком строится на концепци БЭМ. Начиная от классического применения БЭМ при разработке интерфейсов и заканчивая демонстрацией возможностей этого подхода в разработке серверных приложений.
Пользовательский интерфейс активно использует современные браузерные технологии, такие как WebSocket и HistoryAPI.
В устаревших и устаревающих браузерах работоспособность проекта не поддерживается.
###Основные понятия
####Анонимность БЭМ-чан является анонимным форумом. Следовательно, тут отсутствуют пользователи, регистрация и возможность идентифицировать пользователя кроме как по IP-адресу.
Анонимность привносит в процесс общения следующие особенности:
- Написать комментарий или открыть тему может любой человек, не проходя сложную схему регистрации. Фактически, кроме капчи, не существуюет никаких препятсвий перед оставлением сообщения.
- Отсутствие репутации, а следовательно, авторитетов и изгоев в сообществе.
- Пользователи не несут никакой отвественности за высказывания, публикуемые ссылки, тексты и изображения.
####Доска Доска (board, борда, тэг) — тематическая рубрика. Обозначается хэш-тегом, состоящим, как правило, из одной-двух букв. Например, доска #pr обозначает рубрику, посвященную программированию.
Доска состоит из веток обсуждения.
####Ветка обсуждения Общение на форуме проходит в ветках обсуждения (thread, тред, нить). Каждая ветка имеет первый пост-комментарий (оп-пост), который открывает тему, и множество комментариев.
Каждая ветка открывается в рамках одной или несколький досок. Связь с досками отражается в присвоенных теме хэш-тегах.
####Комментарий Минимальная единица обсуждений. Комментарий всегда привязан к одному треду и может содержать следующие элементы:
- уникальный номер;
- текст;
- изображение;
- ссылки на номера других комментариев (возможно из других веток), для которых этот комментарий является ответом;
- пароль (используется для удаления комментария).
Комментарий не может быть пустым: он должен содержать либо текст, либо изображение, либо и то, и другое. При этом, оп-пост обязательно должен содержать картинку.
####Bump и sage
###Лента доски Лента доски (тэга) представляет собой множество всех тредов, связанных с выбранными тэгами, в виде простого списка, отсортированного по дате добавления первого комментария. Изаначально, пользователь видит ленту всех существующих тэгов. Выбирая в меню определенные темы, имеется возможноть фильтровать ленту по своим интересам.
При появлении нового ответа в одном из трэдов, он тут же подсвечивается.
Существуюет возможность включить режим сортировки тредов в ленте по времени добавления последнего комментария. Таким образом, новые комментарии в реальном времени выталкивают свои треды на верх ленты. При выходе из этого режима, последний порядок веток сохраняется.
Кроме оп-поста, в ленте у каждой ветки видны пара её последних комментариев.
###Ветка обсуждения Открывая тред в ленте, пользователь открывает все комментарии, оставленные к выбранной теме, отсортированные в виде простого списка по времени добвления комментария.
Комментарии существуют в виде многосвязного графа: один комментарий может иметь множество ответов и быть ответом на множество других комментариев, даже вне рамок одного треда. По умолчанию, новый комментарий привязывается либо к оп-посту (не имея ссылок на другие комментарии), либо к хэш-тегу (становясь оп-постом и открывя тред).
По аналогии с Твиттером, имеется возможность "раскрыть" комментарий, подтянув все другие комментарии, связанные непосредственно с ним.
###Форма добавления комментария Форма добавления нового комментария содержит следующие поля:
- тема (если это оп-пост);
- текст;
- изображение;
- капча;
- опции bump и sage;
- пароль.
###Форма удаления комментария Форма содержит два поля:
- номер удаляемого комментария;
- пароль, указанный при создании комментария.
Если пароль верен, то комментарий и привязанная к нему картинка удаляются. При удалении оп-поста удаляется весь тред.
###Модераторские опции Модератор имеет возможность удалять нежелательный конент с сайта и закрывать доступ на сайт с определенных IP-адресов. При этом, модератор не может как-либо идентифицировать пользоваетелей, кроме как по их IP-адресам.
Особенностью работы движка БЭМ-чана является то, что объекты блоков одновренно доступны и на клиенте, и на сервере. Иными словами, существует возможность обращаться к серверным свойствам и методам объектов на клиенте, так же как со стороны сервера можно вызывать клиентские функции. Эти возможности аналогичны тем, которые доступны в модуле Nowjs.
###Picture related При написании комментария пользователь имеет возможность воспользоваться функцией picture related: к комментарию автоматически приложится картинтка, найденная по ключевым словам набираемого текста.
###Песочница Используюя концепцию уровней переопределения, реализованную в i-bem, пользователи могут расширять функционал сайта, написав собственные скрипты и сохранив их в общем каталоге пользовательских скриптов, дав им имя и описание. Другие пользователи смогут включать чужие скрипты у себя на странице. Таким образом, реализуется идея БЭМ-песочницы.
####Тематические часы Периодически, в определенное время на форуме включается тематический режим — с помощью профессиональной капч всё общение направляется в определенное русло. Например, каждую пятницу включается js-капча — для оставления комментария требуется решить простейшую скриптовую задачу. Кроме этого, возможны матан-капчи, аниме-капчи и т. п.