Сейчас обсуждают
Пока нет комментариев
👋 Приветствую всех, кто уже здесь!
Этот пост — о том, как появился Stormic, зачем он нужен и куда мы все вместе идем. Это небольшая история о сообществах, технологиях и о том, почему я несколько лет держал эту идею в голове и потратил столько времени на ее реализацию.
Сообщества — это то, что делает нас людьми. Мы собираемся вокруг идей, игр, увлечений, проектов. С года 2019 мы вели Discord-каналы по World of Warcraft на десятки тысяч человек, и передо мной стояла конкретная задача: как систематизировать знания сообщества, как хранить руководства по классам так, чтобы они не терялись в бесконечных сообщениях чата.
Тогда появилась первая идея о сайте с руководствами. Сначала WordPress, потом переписал на чистый HTML+CSS+JS с обновлениями через GitHub. Работало, но было неудобно. И главное — это не решало главной проблемы: где живет само сообщество?
Discord — это чат. Сайт с гайдами — это статика. А где же место, где сообщество существует целостно? Где люди общаются, делятся знаниями, растут вместе?
Я начал искать. Перепробовал десятки open source решений — и каждый раз сталкивался с одним и тем же: либо это выглядело приветом из 2007 года, либо это была очередная CMS с легаси PHP-кодом, в котором нужно копаться и писать костыли. Чувство было такое, будто запускаешь что-то чужое, над чем у тебя нет контроля.
И тогда я понял: нужно писать свое.
Я не сразу пришел к тому, что вы видите сейчас. Были ошибки, были тупики, было переосмысление. Расскажу честно.
Хотелось сделать быстро. Взял PayloadCMS, написал к ней веб-клиент на Next.js и запустил первую версию. Это оказалось ошибкой.
Да, бэк работал как надо, но я не контролировал того, что происходит под капотом. Все строилось на конфиг-файлах, и ограничения упирались в roadmap чужих разработчиков. Например, корректная работа вебсокетов без костылей была недоступна.
Я тратил время не на то, чтобы улучшить платформу, а на то, чтобы понять, как та или иная вещь работает в CMS. Это был тупик. Время потрачено зря, но урок усвоен.
К этому моменту я увлекся Go и решил: клиент на Next.js, бэк на Go. Начал писать обычный монолит. Клиент уже был, оставалось переключить его с CMS на собственный бэк.
Но когда я реализовал примерно половину функционала, понял, что плаваю в собственном коде. Архитектура рушилась, направление зависимостей нарушалось, код превращался в кашу. Я сам переставал понимать, что происходит, и это пугало.
Параллельно я ходил на митапы Яндекса, Ozon, Avito, слушал доклады, зарисовывал схемы, выписывал паттерны. И везде говорили об одном — микросервисы.
Я подумал: а может, это решение? Да, это оверкил. Да, нужно контролировать межсервисное общение, доступность, идемпотентность. Но если написать шаблон микросервиса один раз и разобраться с этим оверхэдом один раз, то дальше получаешь по 10-15 юзкейсов на один сервис, и в этом очень сложно запутаться.
Каждый сервис самодостаточен. Он не знает о других сервисах. Код выглядит чисто. Звучит здорово.
Тут все начало складываться. Я отказался от ORM типа GORM — не хотелось иметь магию, которую нужно отдельно учить и которая к тому же не самая быстрая. Взял sqlc для работы с БД, PostgreSQL и gRPC. Написал шаблон микросервиса с логированием, восстановлением после паники, рейт-лимитером и всем остальным по заветам бигтеха.
Моя ставка на малое количество юзкейсов на каждый микросервис сыграла. Все встало на свои места. А оверхэд микросервисов перестал мешать — он превратился в преимущество.
Этот путь и привел меня туда, где я нахожусь сейчас, когда пишу этот пост.
То, что вы используете сейчас — это первая фаза большого плана. Модуль мультиблогов. Но даже в нем уже есть отличия от привычных платформ.
Никакая редакция не создает категории для постов. Любой пользователь может создать сообщество, развивать его, модерировать, назначать модераторов. Это ближе к сабреддитам, чем к традиционным блог-платформам.
Есть два типа ролей: роли всей платформы и роли внутри каждого сообщества. Система похожа на Discord: владелец платформы создает глобальные роли и назначает права. Владелец сообщества создает локальные роли и управляет ими внутри своего пространства.
У каждого пользователя есть роль `everyone`, через которую владелец может контролировать возможности рядовых участников. Хотите запретить создание сообществ для всех, кроме модераторов? Один переключатель.
Права работают контекстно: роль на удаление постов в сообществе дает право удалять посты только там. Глобальная роль — во всех сообществах. Все просто и прозрачно.
Вы можете установить Stormic на свой VPS одной командой:
curl -sSL https://stormhead.org/stormic/install.sh | bash
Это не SaaS, где ваши данные принадлежат корпорации. Это ваша платформа, на вашем сервере, под вашим контролем.
Текущий функционал я объединяю в модуль мультиблогов. Но Stormic по плану состоит из трех модулей, и я хочу рассказать, куда мы идем.
Это то, что уже работает. Сообщества, посты, комментарии, роли, лента. Фундамент.
Это решение той проблемы, с которой все началось:
Каждому развитому сообществу нужно место для хранения знаний
Когда пользователь создает сообщество, вместе с ним будет создаваться его собственная база знаний — личная Википедия сообщества. Руководства по играм, документация проектов, систематизация любых интересов: кино, музыка, история, что угодно.
У базы знаний будут свои модераторы, своя структура, свои категории. И — что особенно важно — туда можно будет добавлять кастомные JS-скрипты для расширения функционала.
Пример: вы ведете сообщество по World of Warcraft. Подключаете скрипт от Wowhead, и при написании руководства ссылка на способность класса автоматически превращается в подсвеченное название с всплывающей подсказкой при наведении.
Больше никакой токсичности с яростной отправкой ссылок на десяток разных ресурсов, чтобы новичок сам во всем разобрался. Все в одном месте, все под рукой.
База знаний будет глубоко интегрирована с сообществом: уведомления, создание сниппетов из абзацев, отправка их в ленту хоткеями и т.д.
Третий модуль — это то, что объединит все в единое целое. Представьте пользовательский опыт Discord, перенесенный в Stormic.
При создании сообщества будет создаваться не только сообщество и база знаний, но и хаб — аналог Discord-сервера. Каналы, роли, голосовые чаты, аудио и видеовызовы, групповые звонки. Все то, с чем вы ассоциируете Discord функционально.
Все это глубоко интегрировано между собой, в едином приложении. Вам больше не нужно держать открытыми пять разных сервисов, чтобы вести свое сообщество.
Мой план — создать лучший пользовательский опыт по созданию и ведению сообществ, которого еще не было.
Да, я начал с малого. Но стек технологий выбран и устоялся. Вектор развития ясен. Остается самое главное — ваше участие.
Я верю, что в будущем Stormic займет свою нишу в нашем цифровом обществе. Что здесь будут рождаться сообщества, которые станут для людей чем-то большим, чем просто местом в интернете. Что здесь будут систематизироваться знания, которые иначе потерялись бы. Что здесь будут происходить знакомства, которые изменят жизни.
Я предлагаю вам быть здесь сейчас, на ранних стадиях. Не как пассивные пользователи, а как соавторы проекта.
Вместе мы сможем создать что-то новое. Что-то, что подарит нам совершенно новый пользовательский опыт ведения сообществ.
Загрузка...
Тут пока никого нет...