@lab:~$ cat post/honey-garden
🧑💻🧑💻🧑💻
2 недели, golang и react итоги:
Каждый раз, когда готовлюсь к секциям по сисдизу, иду к чат-боту и прошу сгенерировать мне ~20 вариантов продуктов, которые нужно задизайнить. Такой себе мок-собес: сидишь, строишь систему, записываешь себя и проговариваешь, что и почему хочешь добавить, и как будешь это делать.
Иногда он выдает очень интересные идеи, которые хочется вынести за рамки обычного вайтборда и попробовать реализовать. Одной из таких идей стал "внебрачный сын" GitHub и Reddit: взять лучшее от Reddit как социальной платформы и скрестить с техническим слоем GitHub (репозитории, actions и всё такое).
План, конечно, на уровне b2b ai slop pop saas. И если с форумом и социальной частью особо ничего придумывать не нужно, то вот как интегрировать все фичи GitHub — оказалось настоящим квестом (и да, спойлер: не получилось). При попытках разобраться, как работают Forgejo, Gitea и вообще сам Git, появилось два вопроса:
- как это вообще работает?
- почему это работает?
Весь флоу добавления такого функционала имел два пути:
либо делать прослойку, через которую дергать API Forgejo — что неполноценно, местами не работает, да и API не покрывает всего функционала GitHub;
либо форкать Forgejo на 400k строк и делать под себя… (зачем?).
Поэтому для первой итерации так называемого продукта было решено просто добавить интеграции существующих git-хостингов, чтобы можно было делиться репозиториями, PR-ами и т.д. внутри форума.
Теперь про сам форум и feed-ленту. Лента формируется по интересам (тегам) и состоит из RSS-постов и активностей самих пользователей (посты, обсуждения, статьи). Каждый объект в ленте можно обсуждать в Reddit-like комментариях, делиться ссылкой, тегать друзей или сохранять в стор, чтобы вернуться позже.
Сообщество: каждый пользователь может иметь только одно сообщество (чтобы не плодить спам-сетки). От лица сообщества и идет вся активность — посты, статьи и т.д.
Собственно, что тогда делают пользователи? Общаются в чатах (пока один общий на форум), комментируют посты. Позже появятся полноценные чат-комнаты (по аналогии с топиками в Telegram/Discord). Каждое сообщество сможет создавать такие топики и общаться там с фолловерами, создавать sub-топики по интересам и тд и тп.
Вряд ли это станет чем-то большим или хоть сколько-то популярным, но этот двухнедельный трип сильно открыл мне глаза на некоторые вещи в сисдизайне. И в целом идей много — можно добавить платный контент (он уже есть), графовую базу знаний в духе wiki-github для сообществ, хранение файлов и проектов внутри платформы
На самом деле многое уже реализовано, просто не отполировано. Но зацикливаться на доработках — себе дороже. Нужно поставить точку, зафиксировать результат и двигаться дальше.
Было ли полезно реализовать одну из идей сисдиза руками? Конечно. Особенно когда видишь заветные 1–2k RPS на нагрузочном тестировании.
Буду ли я еще делать что-то подобное? Скорее всего, нет — слишком много сил и времени уходит, которые можно вложить во что-то более полезное.
И скорее всего, чуть позде я сделаю его опенсорсным, что позволит поддерживать и развивать его.