Skip to content

Concept

Benjamin Tambourine edited this page Jun 24, 2012 · 2 revisions

План

  1. Цели проекта
  2. Используемые техологии
  3. Структура проекта
    1. Основные понятия
      • Анонимность
      • Доска
      • Ветка обсуждения
      • Комментарий
      • Bump и sage
    2. Лента доски
    3. Ветка обсуждения
    4. Форма добавления комментария
    5. Форма удаления комментария
    6. Модераторские опции
  4. Объектная модель
  5. Продуктовые особенности
    1. Picture related
    2. Песочница
    3. Тематические часы

Цели проекта

Используемые технологии

Проект стремится быть моноязыковым. Клиентские и серверные скрипты пишутся на Javascript. Документ-ориентированная база данных MongoDB.

Архитектура проекта целиком строится на концепци БЭМ. Начиная от классического применения БЭМ при разработке интерфейсов и заканчивая демонстрацией возможностей этого подхода в разработке серверных приложений.

Пользовательский интерфейс активно использует современные браузерные технологии, такие как WebSocket и HistoryAPI.

В устаревших и устаревающих браузерах работоспособность проекта не поддерживается.

Структура проекта

###Основные понятия

####Анонимность БЭМ-чан является анонимным форумом. Следовательно, тут отсутствуют пользователи, регистрация и возможность идентифицировать пользователя кроме как по IP-адресу.

Анонимность привносит в процесс общения следующие особенности:

  • Написать комментарий или открыть тему может любой человек, не проходя сложную схему регистрации. Фактически, кроме капчи, не существуюет никаких препятсвий перед оставлением сообщения.
  • Отсутствие репутации, а следовательно, авторитетов и изгоев в сообществе.
  • Пользователи не несут никакой отвественности за высказывания, публикуемые ссылки, тексты и изображения.

####Доска Доска (board, борда, тэг) — тематическая рубрика. Обозначается хэш-тегом, состоящим, как правило, из одной-двух букв. Например, доска #pr обозначает рубрику, посвященную программированию.

Доска состоит из веток обсуждения.

####Ветка обсуждения Общение на форуме проходит в ветках обсуждения (thread, тред, нить). Каждая ветка имеет первый пост-комментарий (оп-пост), который открывает тему, и множество комментариев.

Каждая ветка открывается в рамках одной или несколький досок. Связь с досками отражается в присвоенных теме хэш-тегах.

####Комментарий Минимальная единица обсуждений. Комментарий всегда привязан к одному треду и может содержать следующие элементы:

  • уникальный номер;
  • текст;
  • изображение;
  • ссылки на номера других комментариев (возможно из других веток), для которых этот комментарий является ответом;
  • пароль (используется для удаления комментария).

Комментарий не может быть пустым: он должен содержать либо текст, либо изображение, либо и то, и другое. При этом, оп-пост обязательно должен содержать картинку.

####Bump и sage

###Лента доски Лента доски (тэга) представляет собой множество всех тредов, связанных с выбранными тэгами, в виде простого списка, отсортированного по дате добавления первого комментария. Изаначально, пользователь видит ленту всех существующих тэгов. Выбирая в меню определенные темы, имеется возможноть фильтровать ленту по своим интересам.

При появлении нового ответа в одном из трэдов, он тут же подсвечивается.

Существуюет возможность включить режим сортировки тредов в ленте по времени добавления последнего комментария. Таким образом, новые комментарии в реальном времени выталкивают свои треды на верх ленты. При выходе из этого режима, последний порядок веток сохраняется.

Кроме оп-поста, в ленте у каждой ветки видны пара её последних комментариев.

###Ветка обсуждения Открывая тред в ленте, пользователь открывает все комментарии, оставленные к выбранной теме, отсортированные в виде простого списка по времени добвления комментария.

Комментарии существуют в виде многосвязного графа: один комментарий может иметь множество ответов и быть ответом на множество других комментариев, даже вне рамок одного треда. По умолчанию, новый комментарий привязывается либо к оп-посту (не имея ссылок на другие комментарии), либо к хэш-тегу (становясь оп-постом и открывя тред).

По аналогии с Твиттером, имеется возможность "раскрыть" комментарий, подтянув все другие комментарии, связанные непосредственно с ним.

###Форма добавления комментария Форма добавления нового комментария содержит следующие поля:

  • тема (если это оп-пост);
  • текст;
  • изображение;
  • капча;
  • опции bump и sage;
  • пароль.

###Форма удаления комментария Форма содержит два поля:

  • номер удаляемого комментария;
  • пароль, указанный при создании комментария.

Если пароль верен, то комментарий и привязанная к нему картинка удаляются. При удалении оп-поста удаляется весь тред.

###Модераторские опции Модератор имеет возможность удалять нежелательный конент с сайта и закрывать доступ на сайт с определенных IP-адресов. При этом, модератор не может как-либо идентифицировать пользоваетелей, кроме как по их IP-адресам.

Модель

Особенностью работы движка БЭМ-чана является то, что объекты блоков одновренно доступны и на клиенте, и на сервере. Иными словами, существует возможность обращаться к серверным свойствам и методам объектов на клиенте, так же как со стороны сервера можно вызывать клиентские функции. Эти возможности аналогичны тем, которые доступны в модуле Nowjs.

Продуктовые особенности

###Picture related При написании комментария пользователь имеет возможность воспользоваться функцией picture related: к комментарию автоматически приложится картинтка, найденная по ключевым словам набираемого текста.

###Песочница Используюя концепцию уровней переопределения, реализованную в i-bem, пользователи могут расширять функционал сайта, написав собственные скрипты и сохранив их в общем каталоге пользовательских скриптов, дав им имя и описание. Другие пользователи смогут включать чужие скрипты у себя на странице. Таким образом, реализуется идея БЭМ-песочницы.

####Тематические часы Периодически, в определенное время на форуме включается тематический режим — с помощью профессиональной капч всё общение направляется в определенное русло. Например, каждую пятницу включается js-капча — для оставления комментария требуется решить простейшую скриптовую задачу. Кроме этого, возможны матан-капчи, аниме-капчи и т. п.