Typegram — дзэн блог платформа

    Привет, Хабр. Решил показать вам движок, который я потихоньку разрабатываю. Это блог платформа, по возможностям очень близкая к медиум и подобным проектам.


    Базовые возможности:


    Публикации, комментарии, избранное, подписки, уведомления, рейтинги, голосования.


    Минималистичный, текстовый дизайн:


    Игровая площадка


    Есть игровая площадка, на которой можно потрогать платформу, без ущерба для мирных жителей: test site.


    Локализация


    Сервис автоматически разделяет пользователей по языку, направляя, русскоязычных пользователей на русский субдомен, а англоязычных — на английский. Те разделение по сути реализовано на уровне контента. Правда интерфейс доступен только английский. На каждом субдомене своя база данных и свои пользователи, регистрация не сквозная (на каждом субдомене своя экосистема, жизнь зародилась не везде, например).



    Оптимизация


    Для сервиса характерна очень агрессивная оптимизация. Все загружаемые изображения более 100 килобайт, жмутся методом Аткинсона в черно белые превью, с возможностью просмотра оригинала, например:


    Не используются тяжеловесные скрипты и стили, а также внешние скрипты, следящие за поведением пользователей. Сайт остается быстрым и удобным на любой платформе в том числе с отключенным яваскрипт. В перспективе хочется достичь скорости загрузки телеграм-каналов.


    Подписки


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



    Уведомления


    Также на главной странице отображаются уведомления о упоминаниях в комментариях, с возможностью перехода:



    Редактор


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


    Система рейтинга


    На главной странице есть три секции с странными наименованиями:
    top mid btm



    Да, я люблю доту (мою собаку зовут Пудж, например). Думаю, что рейтинги это больше про игровые механики/мотивации чем нечто серьезно адекватное. Все статьи идут фармить рейтинг на мид) Как нафармят — попадут в топ. Если сольют мид — провалятся на дно. Заветная формула бережно украдена с ycombinator (новым статьям необходимо меньше голосов для попадания в топ, чем старым). Простите за такое вольное манипулирование такой святой для многих вещью как рейтинг. Впрочем рейтинга авторов, как такового, на данный момент нет. Только рейтинг статей.


    Рейтинг статьи.


    + 5: 1 -


    У каждого пользователя есть 10 голосов в сутки. Он может потратить их как на плюсы, так и на минусы. Как на одну статью все 10 голосов, так и распределить их как ему хочется.
    Автор статьи видит как негативные, так и позитивные реакции, раздельно.



    Рейтинг комментариев


    Комментарии оцениваются только позитивно. Не знаю почему, не спрашивайте. Хотелось дать больше возможностей для сбора фидбека с разными механиками. За комментарий можно отдать лишь один голос. У каждого пользователя — 10 голосов на комментарии в сутки. Один комментарий — один голос. Вроде прозрачно, но это не точно. Возможно скоро это изменится.


    Теги


    Каждая статья может иметь глобальный тег. Пока только один (меня почему то пугают огромные облака тегов на все случаи жизни).



    Открытость


    Исходный код проекта открыт. На гитхабе доступна инструкция по сборке и разворачиванию собственной версии: github


    Ограничения


    Это не первый проект с UGC. К сожалению, примерно раз в неделю прилетают письма счастья от Роскомнадзора/ Хостинг провайдера. Поэтому я довольно нервно реагирую на детское порно и прочий нелегальный контент. Кнопка бан — появилось одной их первых( Почему то многие как то странно трактуют значение слова опенсурс. Ну и срабатывают ассоциации с телеграм/телеграф. Есть ограничения и другого рода — пользователи ограничены по частоте публикации комментариев и постов, есть лимиты на регистрации. Например, нельзя оставлять новые комментарии чаще чем раз в минуту. В комментарии или в посте должно быть более 10 символов. Этот пул ограничений появился не на пустом месте. Некоторых это буквально бесит. Но вот так вот(


    Что внутри


    Проект написан на golang, без внешних зависимостей. Сейчас хостится на обычном выделенном сервере, с медленным hdd и под высокой нагрузкой пока не был. Не хотелось бы забегать вперед и рассказывать, какая прекрасная база данных лежит в основе, так как сперва надо убедиться что она действительно прекрасна)


    Отказ от ответственности


    Многое еще не завершено. Многие вещи реализованы не так, как у всех. Над чем то я экспериментирую. Что то вам покажется неправильным. Но если проект показался вам интересным — попробуйте: github

    Поделиться публикацией
    Комментарии 52
      0
      Прикольная штука, особенно про доту)) Конечно, некоторые раки скажут, что это костыльный велосипед с дырами в безопасности, производительности и поддержке, и они будут правы. Но это интересно и познавательно исправлять фатальный недостаток. Если бы в вашем проекте появилась какая-нибудь изюминка, я бы сам с удовольствием инвайтнулся в пати.
        0
        Велосипедов и правда много, а вот есть ли в нем фатальный недостаток — пока непонятно.
      +1

      Спасибо за труды!


      Открыл для себя awsm.css, пока просматривал репозиторий.

        0
        Все что основано на принципе ничего лишнего, сам придерживаюсь и поддерживаю. Взял в закладки и плюсую
        +1
        Хороший стиль, крутые превью. Вряд ли для этого нужен целый отдельный движок, но всё равно лайк.
          +1
          Если честно писал то я бэкенд для мобильного приложения. Потом решил добавить админку и немного увлёкся
          +1
          Здоровая конкуренция хабру никогда не повредит.
            –2
            Зарегался на всякий случай.
              0
              Выглядит здорово. Рейтинг интересно устроен, идея со «счетом» +:- замечательная — сразу видно controversial комментарии.

              Но рейтинг авторов все же скорее нужен. Тут периодически делались разные предложения об оптимизации кармы, например, о «плате» своим рейтингом за минус другому автору.
                +1
                идея со «счетом» +:- замечательная


                Так оно и на Хабре есть, достаточно навести мышь на цифру рейтинга комментария.
                0
                Расскажите пожалуйста как Вы работаете с данными. Я тут как раз начал пилить go и обнаружил что orm к реляционным базам весьма неудобные и самая продвинутая из них gorm ногтей считают не самым удачным решением.
                  0
                  Из гоу я работал с mysql (напрямую, было очень много проблем, особенно на старте) и с boltdb (проблем на старте не было совсем, но они пришли с ростом базы), свой опыт поверхностно излагал в этом комментарии: habr.com/post/354224/#comment_10775784

                  Потом написал свою бд и собственно проблемы закончились, обзор на хабре — habr.com/post/354224
                  0
                  поддерживает ли в Линкс или аналоги без js?)
                    +1
                    поддерживает
                    0
                    Вопрос про баны, размер комментареим и бд:
                    А нельзя ли сделать так, чтобы каждый был сам себе модератор? не нравится чей-от комментарий — нажимаешь «убрать пользователя с глаз моих». И всё — никаких его комментариев не видишь. Дальше можно развивать «баны моего друга — это мои баны, баны друга друга — мои баны» ну и далее, с огоньком, задором и фантазией.
                      0
                      пока думаю над этим, тут много морально этических сторон — к примеру я забанил и удалил одного пользователя с постом типа «абрвалг — какого хрена тут нельзя постить тексты без текстов?» — так он до сих пор за мной по всем соцсетям бегает, минусует.
                      Есть некоторые безумные идеи сложно реализуемые технически. Типа автор может иметь возможность удалить комментарий к своему посту, так как пост как бы его — но чтобы человек чей комментарий удален — не знал об этом. Или кнопка развидеть все от определенного человека, если достал. Пока в бэкграунде вызревают какие то идеи, и про карму и про модерацию — но еще не вызрели
                        0
                        Не настолько она и безумна, раз применяется на крупных ресурсах.
                          0
                          делал такую кнопку в админском интерфейсе для чата сапорта магазина как то давно, помогало от флуда типа девушка-девушка и тп, но тут и проект с открытым кодом и интерфейс единый.
                        0

                        Это называется Web of Trust. Например, реализовано в расчёте доверия ключам GnuPG и в системе FMS у Freenet. Там можно ставить плюсы-минусы как непосредственно участникам, так и их «листам доверия». Соответственно, его рейтинги для участников взвешиваются относительно проставленного ему вами рейтинга листа (т.е. чем выше вы оцениваете его лист, тем больше он имеет влияния на оценку других пользователей), и всё это распространяется дальше по оценкам листов до какого-то предела. В итоге, позволяет рассчитывать коллективную карму для неизвестных (напрямую) участников через тех, кому и чьему мнению вы доверяете, ну и если карма ниже нуля, то сообщения скрываются по умолчанию.


                        Получается такая коллаборативная фильтрация для любого контента, где каждый видит то, что он хочет видеть, но нет глобального модератора.

                        +1
                        Почему основной контент 640px по ширине? Ровно треть от разрешения fullhd монитора. Мне вот правда интересно, как принимаются такие решения)) Я понимаю крупные компании, где дизайнеры стараются сделать в первую очередь красиво, а потом удобно(привет, вконткте). Но вот чем руководствовались лично Вы?
                          0
                          отсутствием fullhd монитора)
                            0
                            В дев тулзах браузера есть возможность выставлять размер окна, превышающий разрешение монитора. В хроме удобнее всего сделано, т.к. там все скалируется и можно видеть страницу целиком.
                            0
                            можете скриншот полноразмерный закинуть кудать?
                              +2
                              Там еще косяк с отображением на мобиле. Так что создал issue на гитхабе.
                                +2
                                У меня это выглядит так: image
                              0
                              Почему все сравнивают его с Хабром, по мне так это наподобие жуйка или поинта…
                                0
                                Чем-то похож на Эгею :)
                                  0
                                  интересная штука может получиться…
                                  нехватает локали it ))))
                                    0
                                    Немного похоже на teletype.in, но тоже интересно)
                                      0
                                      мне очень нравится этот проект
                                      0
                                      Переименовывайтесь срочно. Хотя, конечно же это ваше дело.
                                      Но никак не дело называться «тупеграм») И да, по статистике: как пишется — так и будут читать, т.е. именно «тупеграм». И еще. Когда подбираете имя, то крайне поинтересуйтесь заранее, что оно значит на хотя бы 10-и самых распространенных языках мира. Совсем экзотика — это проведение исследований на например тему: «с чем ассоциируется 'typegram' у испанцев».
                                      И да, это должно стать абсолютной нормой, привыкайте) Глобализация же. Вас будут смотреть «всякие бразильцы» и прочие. Вы живете в такое время, что любое «имя собственное» сразу же должно быть международным.
                                        0
                                        если инстаграм люлей не наваляет — то останется как есть, если наедет — придется переименовываться
                                        0
                                        Будет ли проект дальше развиваться?
                                          0
                                          будет
                                            0

                                            Можно ли добавить функционала гите в проект?

                                              0
                                              А что это?
                                          0
                                          Если я правильно понял, то это что-то между Яндекс.Дзеном и Telegra.ph, так ведь?
                                            0
                                            довольно много идей украдено у медиум, телеграм и телеграф
                                            немношко украдено с хакерньюс, немношко с реддит
                                            Из дзена не нашлось что украсть. Не то чтобы проект плохой, даже вел там канал какое то время. Но мне не нравится в нем ничего, кроме самой идеи автоматических рекомендаций. Но даже она реализована крайне посредственно.
                                              +1
                                              Ну, это не кража: много гениальных открытий в наше время делается из более простых составных) Не забрасывайте проект ни в коем случае. Успехов вам!
                                            0
                                            Это блог платформа, по возможностям очень близкая к медиум и подобным проектам.


                                            А в чем оригинальность?
                                              0
                                              много переосмыслено
                                              — разделение контента по языкам
                                              — подписки на каналы
                                              — главная страница как пульт управления порталом а не поляна для рекламодателей /лендинг
                                              — раздельный рейтинг
                                              — динамический топ статей с пенальти по времени
                                              — отсутствие внешних зависимостей
                                              — минимальное использование скриптов
                                              — оригинальный алгоритм сжатия картинок вместо ленивой загрузки
                                              — минималистичный интерфейс
                                              — отсутствие привязки к почте, возможность создания юзернейма из одной буквы, оригинальный алгоритм паджинации, чтение статей в хронологическом порядке, я могу продолжать бесконечно, но смысл? Все вебстраницы в чем то похожи друг на друга.
                                              0
                                              Извините за идиотский вопрос, но то, что сайт работает на протоколе http, а не https — это всё из за того, что проект новый?
                                                0
                                                да, картинки пока не переехали на https и автообновление сертификатов не настроено
                                              0
                                              У вас что-то не так со шрифтами заголовков (те которые PT Sans Caption), они жутко мыльные:
                                              Пример


                                              Проверил как выглядит PT Sans Captio на Google Fonts, там всё нормально:
                                              Пример


                                                +1
                                                Нашел, у вас начертание только одно.
                                                Нужно как-то так
                                                https://fonts.googleapis.com/css?family=PT+Sans+Caption:400,700|PT+Sans:400,400i,700,700i&subset=cyrillic"
                                              0

                                              Продолжение приключений тайпграм в Интернет: https://m.habr.com/post/426099/

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

                                              Самое читаемое