Старое ТЗ - wyldrodney/Rejuick GitHub Wiki

Хорошее ТЗ со временем

становится основной

частью документации

к приложению.

(Не помню кто сказал)

reJuick

Общее
    reJuick - сервис микроблогинга, с возможностью работы через XMPP (основное) и Web (дополнительное).
    reJuick позволяет вести три вида блогов: личный дневник, блог для подписанных и общедоступный блог. Отдельно управляется доступность и индексация блога для поисковых систем. Каждое сообщение может быть переведено в другой разряд приватности установкой служебных тегов (например, тег *public сделает запись в приватном блоге доступным всем зарегистрированным пользователям). Чтобы избежать утечки информации из закрытых блогов к новым подписчикам, перед подпиской на закрытый блог присылается уведомление хозяину, который должен подтвердить возможность подписки. Только публичные посты могут попадать в топ, общую ленту и быть рекомендованными. Сделать запись общедоступной для всех (в т.ч. незарегистрированных) позволяет тег *all.
    Некоторые функции и настройки reJuick доступны только тем, кто поддержал сервис не только морально, но и физически.
    На главную страницу для незалогиненных выдаётся лента ТОП-постов (из числа неприватных). Для залогиненных происходит редирект на собственный URL вида https://rejuick.com/Nickname.
    ТОП формируется по мегасложной формуле, учитывающей активность комментирования, количество отрекомендовавших, состав комментирующих. Всё это сделано для того, чтоб пара придурков не могла поднять в ТОП пост, просто быстро набивая комменты к нему.
    Запрещается публиковать сообщения, нарушающие законы Пальма-де-Майорка и прилегающих территорий.
    Запрещается спам, флуд и непоклонение божествам-основателям.
    При регистрации обязательно указать свой NICK и язык. NICK используется для сокрытия JID, а язык - для сортировки постов на языковые группы. Настройки позволяют отсортировать языковые группы доставляемых сообщений, как через Web, так и через XMPP. Если не указан язык, то сортировка не производится (и будут видны посты всех китайцев, испанцев и арабов)
    В профиле предусмотрено поле для описания бложека, задаётся командой ABOUT. Разрешён полнотекстовый поиск по полю описания профиля и запрет на поиск в своём профиле (команды SEARCH и INDEX)
Основные команды
    NICK - привязка уникального ника к JID. Контроль уникальности и аналогичных\похожих ников. Разрешения ников на кириллице.
    LOGIN - получение уникальной ссылки на вход в Web.
    HELP число  - встроенная справка, постранично (чтоб не вываливало простыню на 3 метра), число - это номер страницы хелпа
    FULLHELP - вся справка разом
    ABOUT текст - добавить описалово себе в профиль
    ABOUT @username - прочиатть о профиле
    ABOUT - прочитать свой профиль
    SEARCH текст - полнотекстовый поиск по записям в профилях
    INDEX ON\OFF - разрешить смотреть и искать по профилю
    WTF - получить ответ на вопрос “Куда я попал?”
    SET INDEX ON\OFF — разрешить\запретить индексацию бложека поисковиками.
    MYLANG ru[en,kz..xx] - установить мой язык, по-умолчанию ru (может быть изменён админом). Пока не установлен пользователем, система будет выводить предупреждение при каждом посте, а сами посты не попадут в ленту до объявления языка.
    LANG ru[en,kz,au..xx] - установить язык(и) сортировки. Выбрать несколько языков будет удобно тем, кто интересуется зарубежными новостями или (не дай бог) умеет читать на иврите.
    *тег1 *тег2 Какой-то текст - отправка текста
    #123456 - показать пост
    #123456+ - показать тред
    #123456++ - показать первый пост полностью, без обрезки длины
    #123456[1..10] - показать комменты 1-10
    #123456 Какой-то текст - комментировать /0
    #123456/12 - комментировать комментарий /12
    ! #123456 - порекомендовать пост
    ! #123456 *тег ТЕКСТ - порекомендовать с добавлением собственного тега (в том числе и служебного) и собственным текстом
    ! #123456/12 - порекомендовать коммент 12
    ! #123456/12 *тег ТЕКСТ - порекомендовать комментарий с добавлением собственного тега и текста
    S @username - подписаться на @username
    S @username ТЕКСТ - подписаться и послать некоторый текст, без занесения его в БД
    SS @username - подписаться на человека и его friends
    WL @username - разрешить @username на себя подписаться (если требуется разрешение в настройках)
    S #123456 - подписаться на тред
    S *тег - подписаться на тег
    S ‘слово’ - подписаться на слово
    S ALL - подписаться на всю ленту reJuick
    BL @username - добавить пользователя в Black List
    BL *тег - добавить тег в Black List
    BL ‘слово’ - добавить слово в Black List
    U #123456 - отписаться от треда (только ответы на твои комменты)
    U #123456 повторно - отписаться от треда целиком
    OFF - полностью выключить доставку в jabber.
    OFFLITE - оставить только доставку новых постов от friends, не доставлять рекомендации, комменты, подписки на теги\слова.
    DELETEALL - грохнуть свои посты (обязательно выдача предупреждения)
    DELETEALLFULL - грохнуть свои посты и комменты (обязательно выдача предупреждения)
Клиенты
    Клиенты - самостоятельные приложения и плагины-расширения для других XMPP-клиентов, а так же Web-морда.
    Целевой список самостоятельных клиентов:
        Windows
        Linux
        BSD
        iPhone
        Bada
        Andoid
        MeeGo
        Symbian
        WinMobile (знаю у кого заказать).
        Java
    Целевой список плагинов для клиентов:
        Psi+
        Pidgin
        QIP, конечно же
    Выпадающий список из наиболее часто используемых тегов. Или настраиваемых пользователем.
    Отображение номеров постов, кратких ссылок на вставку команд удаления, рекомендации, подписки, отписки, полного просмотра
    Краткие ссылки на пользователях: последние посты, подписка, отписка, WL (при уведомлении о попытке подписаться), BL
    Отображать количество “новых” комментов (с момента последнего посещения)
    Просмотр превьюшек фото в постах.
    Доступ к редактированию своего жуйкопрофиля, чтоб не всё командами хреначить. Для полноценных клиентов.
    Добавление картинок к постам и комментам.
    Просмотр картинок не только с собственного домена, но и со сторонних хостингов (настраиваемо, чтоб можно было отключить)
    Ради прикола кнопочку - отправлять в бездну bash.im, zadolba.li, ithappens.ru или killmipls.
Фичи
    Регистрация
        Регистрация с любого JID методом добавления в ростер бота [email protected]
        В ответ на неправильные команды - краткая инструкция с основными: NICK, LOGIN, HELP
        Установка ника, вида @nickname
        Обязательная смена JID на @NICK перед разрешением постить
        Обязательно указать MYLANG перед разрешением постить (в начале развития можно просто заменить на дефолтное присвоение ru)
        Разрешить регистрацию через Web, но с проверкой E-Mail и капчей.
        Предусмотреть на будущее возможность регистрации только по инвайтам
        Раздавать преднастроенный клиент с собственным JID или договориться о сотрудничестве с кем-нибудь.
    Постинг
        Ограничить минимальный пост на 2-3 символа
        Максимальное количество текста ограничить 64кб
        Ограничить размер фото. А ещё лучше автоматически подрезать до 1024*768 точек (настраиваемо админом) и 4000*3000 для платных аккаунтов
        Видяшки нахуй не нужны? Ну или предусмотреть возможность их включить только для платников.
        Ограничить количество фоток до 3-х в день для бесплатников.
        Ограничить частоту отправки постов и команд до 1 шт в 5 секунд
        Разрешить добавку к первому посту до 5 фото (платникам), просмотр в виде слайд-шоу.
        Слишком длинные посты обрезать на веб-морде и при доставке в XMPP. (прочитать слишком длинный пост через jabber полностью так: #123456++, на веб-морде - кнопкой Свернуть/Развернуть)
        Добавить нормальную метку времени, когда было написано сообщение и доставлять эту метку через XMPP с учётом часовых поясов
        Добавить настройку, как форматировать текст: Wiki-разметку, как старый Juick или BB-code.
        Оформление текста: жирный, курсив, подчёркнутый, зачёркнутый
    Подписки
        На пользователей, формируя список friends
        На теги
        На слова в тексте
        На общую ленту своего языка (мало ли извращенцев)
        Галочка “резать мат” для замены мата на &*^$&^&$^% во входящем и на веб-морде
        Запретить, по желанию, присылать рекомендации от friends
        Настройка “подтвержение для подписчика”, чтоб для того, чтоб подписаться, надо было ждать одобрения в виде WL @username
    Рекомендации
        Рекомендации постов
        Рекомендации комментариев
        Добавление своего текста или тега к рекомендации, в том числе служебных тегов
        Если рекомендованный пост снабжали своим текстом, то при удалении исходного поста, рекомендация останется как собственный пост
    Комментирование
        Разрешить коментарии постов
        Разрешить добавление картинок к комментариям
    Теги
        Ограничение до 10 (или 15) тегов, для халявщиков - 3.
        Автоматическое присваивание тега *мат если по фильтру проходит мат.
        Тег *readonly запрещает комментарии ВСЕМ
        Для ленивых - кнопки в клеент и на веб-морду чтоб одним кликом добавлять служебные теги.
        Настройку “Скрывать служебные теги”
        Настройка “Тег чувствителен к регистру или нет”
    Внешний вид Web-морды
        Запилить возможность выбора разных CSS для оформления
        Скопировать стили всех морд, из\в которые настраивается кросс-постинг.
        Уведомления и подсказки выводятся в Content-Top, с галочкой “скрыть и больше не показывать”.
    Модерация
        Сортировка постов в виде таблицы через web, с возможностью добавить\удалить теги, приватность, грохнуть набор постов. Отображается как таблица, слева столбцы для расстановки галочек и опций, тегов. Справа - первые строки текста самих постов.
        Пользователь вправе удалить комментарии к своим постам от других пользователей.
    Приватность блога
        Отдельная настройка “Показывать через web незарегеным или не показывать”. Регулируется в случае “не показывать” тегом *all в случае “показывать” - тегом *noall
        Отдельная настройка - разрешать индексацию блога поисковиками или нет
        Список BL. Игнорирует все настройки приватности и не показывает указанным пользователям посты, не даёт на них отвечать. Для платников сделать настройку “не показывать мои комментарии в чужих тредах для BL”. Так же в BL включаются стоп-слова подписок и стоп-теги при подписке на теги.
        Список BL через Web: отдельную настройку “Показать\Не показать через веб с фильтром BL или нет”
        Три состояния приватности, рекомендовать можно только 1 тип сообщений:
            Публичный, для всех зарегистрированных (private делает 3, friends делает 2)
            Только для подписчиков (private делает 3, public делает 1)
            Приватный, только для себя (public делает 1, friends делает 2)
    Удаление
        Возможность группового удаления своих постов по:
            Тегу
            Нескольким тегам (тег 1 & тег 2)
            По времени (с указание даты, диапазона дат, времени)
            Удаление, включая рекоммендации
        Удаление профиля, с указанием, удалить только посты, или прихватить комментарии к чужим постам.
        Обнуление профиля, то есть регистрация не убирается, но все посты стираются.
    Авто-чистка по времени и тегу
        Добавить настройку для 1-5 тегов с назначением им свойств автоудаления по времени. Например:
            *day - через сутки пост удалится
            *week - через 7 суток
            *year - через год
            *хрень - через 2 суток
        Добавить настройку “удалять все посты через N суток, кроме *тег и *тег” причём, назначение архивного тега не обязательно.
    Занять старые номера постов
        Если пост был удалён и номер поста свободен, то назначить его новому посту
        Добавить настройку, разрешать ли занимать ранние номера или всегда добавлять только более высокие порядки номеров
    Кросспостинг
        Разрешить связывать reJuick-акк с сервисами:
            Вконтакт
            гуглоплюс
            фэйсбук
            старый жуйк (с парсингом комментов в новый)
            псто
            бнвач
            mail.ru
            QIP-микроблоги
            status.net 
        Разрешить добавлять вместе с XMPP-клиентов доставку в ICQ, Mail.Agent и постинг оттуда.
        Сделать импорт своих постов из старых аккаунтов на Жуйк, Псто, Бнвач.