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


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


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


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


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


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


Локализация


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



Оптимизация


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


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


Подписки


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



Уведомления


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



Редактор


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


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


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



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


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


+ 5: 1 -


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



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


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


Теги


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



Открытость


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


Ограничения


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


Что внутри


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


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


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

Комментарии (51)


  1. Griboks
    13.08.2018 23:32

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


    1. recompileme Автор
      13.08.2018 23:44

      Велосипедов и правда много, а вот есть ли в нем фатальный недостаток — пока непонятно.


      1. Griboks
        13.08.2018 23:48
        +1

        Конечно же есть.


  1. CuamckuyKot
    14.08.2018 01:15

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


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


  1. houk
    14.08.2018 08:38

    Все что основано на принципе ничего лишнего, сам придерживаюсь и поддерживаю. Взял в закладки и плюсую


    1. recompileme Автор
      14.08.2018 09:04

      1. PaulMaly
        14.08.2018 09:27
        +1

        Первый вариант видимо из проекта RealWorld был позаимствован?


        1. recompileme Автор
          14.08.2018 09:35

  1. muon
    14.08.2018 08:43
    +1

    Хороший стиль, крутые превью. Вряд ли для этого нужен целый отдельный движок, но всё равно лайк.


    1. recompileme Автор
      14.08.2018 09:49

      Если честно писал то я бэкенд для мобильного приложения. Потом решил добавить админку и немного увлёкся


  1. AndreySu
    14.08.2018 08:44
    +1

    Здоровая конкуренция хабру никогда не повредит.


  1. dmitry_dvm
    14.08.2018 10:11

    Зарегался на всякий случай.


  1. ClearAirTurbulence
    14.08.2018 10:40

    Выглядит здорово. Рейтинг интересно устроен, идея со «счетом» +:- замечательная — сразу видно controversial комментарии.

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


    1. JC_IIB
      14.08.2018 11:12

      идея со «счетом» +:- замечательная


      Так оно и на Хабре есть, достаточно навести мышь на цифру рейтинга комментария.


  1. apapacy
    14.08.2018 10:43

    Расскажите пожалуйста как Вы работаете с данными. Я тут как раз начал пилить go и обнаружил что orm к реляционным базам весьма неудобные и самая продвинутая из них gorm ногтей считают не самым удачным решением.


    1. recompileme Автор
      14.08.2018 10:57

      Из гоу я работал с mysql (напрямую, было очень много проблем, особенно на старте) и с boltdb (проблем на старте не было совсем, но они пришли с ростом базы), свой опыт поверхностно излагал в этом комментарии: habr.com/post/354224/#comment_10775784

      Потом написал свою бд и собственно проблемы закончились, обзор на хабре — habr.com/post/354224


  1. kokorins
    14.08.2018 11:26

    поддерживает ли в Линкс или аналоги без js?)


    1. recompileme Автор
      14.08.2018 11:32

      поддерживает


  1. smallreg
    14.08.2018 11:35

    Вопрос про баны, размер комментареим и бд:
    А нельзя ли сделать так, чтобы каждый был сам себе модератор? не нравится чей-от комментарий — нажимаешь «убрать пользователя с глаз моих». И всё — никаких его комментариев не видишь. Дальше можно развивать «баны моего друга — это мои баны, баны друга друга — мои баны» ну и далее, с огоньком, задором и фантазией.


    1. recompileme Автор
      14.08.2018 11:44

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


      1. Leopotam
        14.08.2018 11:52

        Не настолько она и безумна, раз применяется на крупных ресурсах.


        1. recompileme Автор
          14.08.2018 12:02

          делал такую кнопку в админском интерфейсе для чата сапорта магазина как то давно, помогало от флуда типа девушка-девушка и тп, но тут и проект с открытым кодом и интерфейс единый.


    1. rkfg
      14.08.2018 16:39

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


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


  1. sw0rl0k
    14.08.2018 12:33

    Почему основной контент 640px по ширине? Ровно треть от разрешения fullhd монитора. Мне вот правда интересно, как принимаются такие решения)) Я понимаю крупные компании, где дизайнеры стараются сделать в первую очередь красиво, а потом удобно(привет, вконткте). Но вот чем руководствовались лично Вы?


    1. recompileme Автор
      14.08.2018 12:35

      отсутствием fullhd монитора)


      1. SergeiMinaev
        14.08.2018 16:14

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


    1. recompileme Автор
      14.08.2018 13:00

      можете скриншот полноразмерный закинуть кудать?


      1. sw0rl0k
        14.08.2018 13:29
        +1

        Там еще косяк с отображением на мобиле. Так что создал issue на гитхабе.


      1. SONce
        14.08.2018 13:35

        У меня это выглядит так: image


  1. jimmyjonezz
    14.08.2018 13:26

    Почему все сравнивают его с Хабром, по мне так это наподобие жуйка или поинта…


  1. Sovetkali
    14.08.2018 13:49

    Чем-то похож на Эгею :)


  1. AlePil
    14.08.2018 15:26

    интересная штука может получиться…
    нехватает локали it ))))


  1. ZonerM
    14.08.2018 15:44

    Немного похоже на teletype.in, но тоже интересно)


    1. recompileme Автор
      14.08.2018 17:54

      мне очень нравится этот проект


  1. InterceptorTSK
    14.08.2018 17:46
    -1

    Переименовывайтесь срочно. Хотя, конечно же это ваше дело.
    Но никак не дело называться «тупеграм») И да, по статистике: как пишется — так и будут читать, т.е. именно «тупеграм». И еще. Когда подбираете имя, то крайне поинтересуйтесь заранее, что оно значит на хотя бы 10-и самых распространенных языках мира. Совсем экзотика — это проведение исследований на например тему: «с чем ассоциируется 'typegram' у испанцев».
    И да, это должно стать абсолютной нормой, привыкайте) Глобализация же. Вас будут смотреть «всякие бразильцы» и прочие. Вы живете в такое время, что любое «имя собственное» сразу же должно быть международным.


    1. recompileme Автор
      14.08.2018 18:04

      если инстаграм люлей не наваляет — то останется как есть, если наедет — придется переименовываться


  1. To4KaXD
    14.08.2018 17:53

    Будет ли проект дальше развиваться?


    1. recompileme Автор
      14.08.2018 18:02

      будет


      1. Gelleson
        14.08.2018 23:42

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


        1. recompileme Автор
          14.08.2018 23:43

          А что это?


  1. kryatov
    14.08.2018 18:22

    Если я правильно понял, то это что-то между Яндекс.Дзеном и Telegra.ph, так ведь?


    1. recompileme Автор
      14.08.2018 18:32

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


      1. kryatov
        14.08.2018 18:42
        +1

        Ну, это не кража: много гениальных открытий в наше время делается из более простых составных) Не забрасывайте проект ни в коем случае. Успехов вам!


  1. stratosmi
    14.08.2018 18:40

    Это блог платформа, по возможностям очень близкая к медиум и подобным проектам.


    А в чем оригинальность?


    1. recompileme Автор
      14.08.2018 18:49

      много переосмыслено
      — разделение контента по языкам
      — подписки на каналы
      — главная страница как пульт управления порталом а не поляна для рекламодателей /лендинг
      — раздельный рейтинг
      — динамический топ статей с пенальти по времени
      — отсутствие внешних зависимостей
      — минимальное использование скриптов
      — оригинальный алгоритм сжатия картинок вместо ленивой загрузки
      — минималистичный интерфейс
      — отсутствие привязки к почте, возможность создания юзернейма из одной буквы, оригинальный алгоритм паджинации, чтение статей в хронологическом порядке, я могу продолжать бесконечно, но смысл? Все вебстраницы в чем то похожи друг на друга.


  1. partizan205
    14.08.2018 20:05

    Извините за идиотский вопрос, но то, что сайт работает на протоколе http, а не https — это всё из за того, что проект новый?


    1. recompileme Автор
      14.08.2018 20:08

      да, картинки пока не переехали на https и автообновление сертификатов не настроено


      1. port443
        14.08.2018 21:51

        Попробуйте применить Protocol-relative URL.


  1. ImKremen
    14.08.2018 21:19

    У вас что-то не так со шрифтами заголовков (те которые PT Sans Caption), они жутко мыльные:

    Пример


    1. ImKremen
      14.08.2018 21:27
      +1

      Нашел, у вас начертание только одно.

      Нужно как-то так
      https://fonts.googleapis.com/css?family=PT+Sans+Caption:400,700|PT+Sans:400,400i,700,700i&subset=cyrillic"


      1. recompileme Автор
        14.08.2018 22:58

        спасибо!