Сейчас обсуждают
Пока нет комментариев
👋 Приветствую, друзья!
Релиз 0.0.6 получился долгим. Местами — откровенно выстраданным.
Если попробовать описать его одной мыслью, получится так: Stormic 0.0.6 — это про своё. Своя база знаний, своя авторизация, свои инструменты. Всё то, что раньше выглядело как временное решение или затычка, постепенно становится полноценной частью системы. И, честно говоря, от этого становится заметно спокойнее.
Рассказываю, что изменилось, почему я принял некоторые решения и куда всё это движется.
Именно ради них и задумывалось обновление 0.0.6. Теперь у сообществ есть собственные базы знаний - что-то вроде вики, которую можно наполнять и развивать вместе.
Правда, с ними вышла забавная история.
Мне настолько не нравилось, как базы знаний получаются визуально, что я постоянно откладывал к ним возвращение. В итоге за время этих метаний успел дописать ещё одну большую фичу и несколько вещей поменьше. Но об этом чуть дальше.
Самое интересное, что я вроде бы довольно чётко представлял, какими хочу видеть базы знаний. А когда сел за вёрстку, оказалось, что результат вообще не совпадает с ожиданиями, хотя я делал именно то, что задумал. Какой-то дизайнерский парадокс.
В какой-то момент я понял, что могу бесконечно смотреть на одни и те же экраны, пытаться нащупать правильное решение и откладывать релиз. Поэтому решил больше не тянуть.
Сейчас визуал местами шероховатый, и я это прекрасно понимаю. В следующих трёх обновлениях планирую отдельно заняться базами знаний: исправить огрехи, разобраться с тем, что не получилось с первого раза, и постепенно привести их к тому виду, который мне самому хочется видеть.
Но за внешним видом уже есть вполне серьёзная функциональность:
Последний пункт особенно интересен технически. Я хотел не просто сделать редактор текста, а построить основу, на которой можно развивать полноценные базы знаний с разными типами контента, а в будущем typst даст возможность писать невероятные по сложности статьи, любой верстки, а не только так как я сверстал страницу статей.
Редактор поддерживает специальные блоки для игровых руководств. Пока реализована поддержка World of Warcraft: вставки Wowhead, окна талантов, ротации и другие элементы, которые позволяют делать не просто текстовые статьи, а полноценные гайды.
В дальнейшем планирую добавлять поддержку других игр.
Это только начало. Мне хочется, чтобы базы знаний в Stormic были не формальным дополнением к сообществу, а полноценным местом, где можно хранить инструкции, документацию, руководства и коллективно накапливать знания.
Найти базы знаний можно на странице сообществ:
Stormic — контент, сообщества и вы
Stormic — платформа, где живёт и развивается одноимённый открытый софт. Здесь ты можешь получить помощь по установке и работе со Stormic, обсудить его развитие, задать вопрос и поделиться опытом. Но Stormic — это не только технология. Это ещё и пространство для контента: пиши статьи, делитесь мнениями, обсуждайте то, что вам интересно. Игры, фильмы, сериалы, музыка, книги, мемы, технологии — гик-культура во всех её проявлениях. Место, где можно поговорить обо всём и ни о чём, найти единомышленников и просто хорошо провести время.
https://stormic.stormhead.org/communities
У карточки каждого сообщества есть иконка книжки - она ведёт в базу знаний этого сообщества. Вот например домашняя страница базы знаний
Stormic — контент, сообщества и вы
Stormic — платформа, где живёт и развивается одноимённый открытый софт. Здесь ты можешь получить помощь по установке и работе со Stormic, обсудить его развитие, задать вопрос и поделиться опытом. Но Stormic — это не только технология. Это ещё и пространство для контента: пиши статьи, делитесь мнениями, обсуждайте то, что вам интересно. Игры, фильмы, сериалы, музыка, книги, мемы, технологии — гик-культура во всех её проявлениях. Место, где можно поговорить обо всём и ни о чём, найти единомышленников и просто хорошо провести время.
https://stormic.stormhead.org/k/stormic
С лентой обновлений и категориям, а это первая тестовая статья в базе знаний. Я ближайшее время я напишу статья по каждому отдельно компоненту нашей архитектуры и опишу все в общем. Появится полноценная документация по проекту.
Первая статья:
Stormic — контент, сообщества и вы
Stormic — платформа, где живёт и развивается одноимённый открытый софт. Здесь ты можешь получить помощь по установке и работе со Stormic, обсудить его развитие, задать вопрос и поделиться опытом. Но Stormic — это не только технология. Это ещё и пространство для контента: пиши статьи, делитесь мнениями, обсуждайте то, что вам интересно. Игры, фильмы, сериалы, музыка, книги, мемы, технологии — гик-культура во всех её проявлениях. Место, где можно поговорить обо всём и ни о чём, найти единомышленников и просто хорошо провести время.
https://stormic.stormhead.org/k/stormic/architecture/authlink-5525713e
Возможно вам покажется, что оно не сильно отличается от постов, но под капотом это совсем другое. Обновление v0.0.6 добавило основной скелет, а в дальше мы будем развивать все возможности которые заложены в наши базы знаний, ведь напоминаю, что в ядро баз знаний лежит движок typst который даёт безграничный возможности для написания статей. Тем не менее, систематизация по категориям, автоматическое меню навигации, версионирование и другие приятные плюшки есть уже сейчас.
А вот это та самая большая фича, которая появилась, пока я пытался разобраться с базами знаний.
Собственный провайдер авторизации я хотел сделать давно, но постоянно казалось, что пока рано. Есть же готовые решения: бери, настраивай и пользуйся.
И это действительно работает — до определённого момента.
В какой-то момент я начал замечать, что готовые решения приходится постоянно подстраивать под архитектуру Stormic. У них свои правила, свои ограничения, свои интерфейсы и собственное представление о том, как должна работать авторизация. В результате вместо того, чтобы развивать продукт, приходится договариваться с ещё одной системой, которая живёт по своим правилам.
Я уже размышлял об этом в отдельном посте про базы знаний, хабы и те же грабли с готовыми решениями. И в случае с авторизацией в итоге пришёл к тому же выводу: иногда написать своё проще, чем бесконечно подстраиваться под чужое.
Так появился Authlink - наш собственный провайдер идентификации на базе OpenID Connect (OIDC), да именно OIDC и об этом я расскажу позже в отдельной статье.
Здесь совпало несколько обстоятельств.
Во-первых, иногда хочется отвлечься от привычного стека и попробовать что-то новое.
Во-вторых, для сервиса баз знаний мне понадобился Rust из-за Typst — движка, на котором построена система работы со статьями. В результате в проекте появился первый Rust-микросервис, а вместе с ним — необходимость развивать общую инфраструктуру для этого языка.
Я начал выносить в общие библиотеки логирование, пагинацию, обработку ошибок и другие компоненты, которые нужны сервисам. Не хотелось, чтобы эта часть стека осталась в зачаточном состоянии на фоне растущего числа Go-сервисов.
Поэтому я решил развивать Rust-инфраструктуру дальше и написать на Rust ещё и провайдер авторизации.
Получается, что базы знаний принесли с собой не только новый пользовательский функционал, но и ещё одно направление развития всей архитектуры Stormic.
При этом криптографию я, конечно, не изобретаю. Там, где цена ошибки слишком высока, нужно опираться на проверенные стандарты, а не экспериментировать. Поэтому я взял индустриальный стандарт протокола OIDC и начал оборачивать его в Rust код, чтобы не нарушить ни единого стандарта этого протокола.
Есть и ещё один важный момент: Authlink уже сейчас написан как отдельный, самостоятельный продукт и интегрируется в инфраструктуру Stormic через дополнительный адаптер, для шины событий NATS. Это сделано намеренно, чтобы он небыл приколочен к нашей инфраструктуре намертво, а был универсальный. Мы его сейчас обкатаем в Stormic и вы сможете использовать его в своих проектах. Создание, активация, деактивация и удаление аккаунтов автоматически передаются другим сервисам через NATS эвенты, которые в свою очередь вызываются вебхуками в единой транзакции создания профиля, например.
Это важная часть идеи Stormic: сервисы должны не просто существовать рядом, а работать как единая система.
И самое главное — миграция на AuthLink сохранила идентификаторы пользователей. Профили, авторство публикаций, подписки и остальные связи остались на своих местах.
Есть, правда, нюанс: <b>пароли перенести не удалось из-за разных паттернов хэшировария. Поэтому после обновления для входа потребуется восстановить доступ к аккаунту через форму "Забыли пароль". Это отдельная история, о которой расскажу подробнее в одном из следующих постов.</b>
Для входа в свой аккаунт смените пароль через форму "Забыли пароль"
Не все изменения можно увидеть в интерфейсе, но именно они определяют, насколько удобно будет развивать проект дальше.
Я привёл инструменты установки и запуска к единому подходу. Конфигурация теперь задаётся через переменные окружения, а локальная разработка стала гибридной: инфраструктура работает в контейнерах, а сами сервисы можно запускать нативно.
Заодно прокачал "scli" — инструмент для управления Stormic.
Теперь он умеет:
Всё это особенно важно сейчас, когда я меняю внутренние компоненты платформы, но хочу сохранить данные пользователей и работоспособность уже развёрнутых экземпляров.
Вообще, чем дальше развивается проект, тем больше я убеждаюсь: фундамент — это не только выбор языка, базы данных или способа взаимодействия между сервисами. Это ещё и возможность без лишней боли обновлять систему, переносить данные и добавлять новые возможности, не переписывая всё заново.
Именно на это я сейчас и стараюсь ориентироваться.
Ну и еще обновлены версии корневых компонентов стэка. Nextjs обновление до 16.3.х что дало ускорее обработки сервер рендеринга, typescrypt переведён на версию 7.х и Теперь имеет композитор написаный на go, сам go в стэке обновлен до последней версии. Все это прибавило нам производительности.
Тут будет коротко. Перелопатил все наши шэлы, обёртки, карточки и вообще чуть ли не все компоненты UI, которые отвечают за позиционирование элементов на странице. Было все достаточно самостоятельно, каждый компонент можно сказать сам решал как он будет позиционироваться на странице, какие у него будут отступы и т.д.
Теперь же, у нас есть централизипованные AppShell которые отвечают за другие компоненты. Теперь всё отступы и т.д. приведены к единому стилю. Например вы можете видеть, что когда вы листает страницу на телефоне, то концентрации аккаунратно свеоху и снизу скругляет углы и не принимает к хэдеру сверху и панели навигации снизу.
Если коротко, в 0.0.6 я сделал три большие вещи:
Разумеется, вместе с новыми возможностями обнаружились и баги, и неожиданные сценарии. Например, уведомления о вступлении в собственное сообщество. Да, такое тоже бывает. 🙂
Поэтому ближайшие обновления будут не столько про количество новых функций, сколько про качество уже существующих.
Клиент хабов уже готов и ждёт, когда появится необходимый для него бэкенд.
Речь о чатах, комнатах, каналах, голосовых и видеозвонках — всём том, что должно превратить Stormic из платформы для сообществ с публикациями и базами знаний в полноценное пространство для общения и совместной работы.
План такой:
После этого я хочу завершить этап, в котором каждое обновление приносит огромный пласт новых возможностей, и перейти к более спокойному, устойчивому развитию: постепенно добавлять функциональность, улучшать существующие механики, закрывать баги и уделять больше внимания качеству.
Не потому, что больших идей больше нет. Наоборот — их достаточно. Просто хочется, чтобы всё уже задуманное становилось не просто доступным, а действительно удобным и надёжным.
В конечном счёте я всё ещё двигаюсь к той же идее, с которой начинал Stormic: объединить сообщества, знания и общение в одном пространстве, чтобы людям не приходилось собирать свою инфраструктуру из десятка отдельных сервисов.
И каждый такой релиз — ещё один шаг в эту сторону.
Спасибо всем, кто следит за развитием Stormic, пишет обратную связь, спорит, задаёт вопросы и замечает мелочи. Особенно те мелочи, которые я сам уже перестал замечать после очередного десятка часов за одним и тем же экраном
Спасибо, что дочитали. До встречи в следующих обновлениях! 👋
Загрузка...
Тут пока никого нет...