- PVSM.RU - https://www.pvsm.ru -
Пикабу долгое время было уютным уголком для обмена историями, опытом, творчеством, мнениями и эмоциями. Однако ряд нововведений, таких как отмена баянометра, изменение алгоритмов и скрытие отрицательных оценок, привели к потере духа оригинального портала. Многие из нас, пришедшие туда в молодости и теперь ставшие взрослыми, почувствовали, что наши ценности и мнения игнорируются. В ответ на это, мы, группа энтузиастов, создали "Капибару" – проект, который стремится сохранить лучшие стороны Пикабу, предоставляя пространство где пользователи сами решают какой контент "годный" и какой контент хотят видеть в своей ленте.
1. Открытый исходный код: Проект "Капибара" основан на принципах открытости. Это значит, что каждый желающий может ознакомиться с кодом, предложить свои улучшения или доработки. Такой подход обеспечивает не только прозрачность разработки, логики формирования лент и функционала, но и гарантирует, что даже в случае внешних давлений или попыток вмешательства, проект может быть легко восстановлен и продолжен сообществом.
2. Структура команды и активные участники:Месяц назад, в группу именно разработки присоединилось более 30 человек(с профильным опытом от 4 до 14 лет). В команде есть: бэкенд - и фронтенд-разработчики, дизайнеры, иллюстратор, DBA, девопсы, тестировщики, ML-инженер, маркетолог и smm-специалист. Все мы на условиях посильного вклада. Каждое направление имеет свою специализацию и ответственность, что позволяет эффективно распределять задачи и ресурсы.
3. Процесс разработки: Сформированы функциональные требования, из которых по мере развития формируются задачи. Все задачи для разработки сначала попадают в бэклог. Оттуда они перемещаются в ToDo, и каждый разработчик может взять себе задачу по мере сил. После выполнения задачи следует процесс ревью, апрувы и, наконец, merge request и деплой.
4. Активное участие сообщества: Мы понимаем, что наш проект существует благодаря активному участию сообщества. Поэтому мы всегда рады предложениям, идеям и обратной связи. На данный момент основной фокус – создание MVP, но после его выпуска мы будем рады рассмотреть все дополнительные функции и предложения.
5. Технологический стек: На данный момент для разработки выбраны следующие технологии:
Backend: Python+Django+Redis+PostgreSQL
Frontend: Typescript+Vue+Pinia
6. Финансирование и реклама: На начальном этапе проект не преследует коммерческих интересов. Однако в будущем рассматривается возможность размещения рекламы для обеспечения окупаемости хотя бы инфраструктуры приложения.
Бот для публикации: Бот сделали в первые же дни, люди хотели делиться своим контентом, но уже не хотели нести его на Пикабу. И надо было срочно воспроизводить хоть где-нибудь функционал Свежее/горячее/оценки/рейтинг/комментарии. Вот его код GitLab [1]. Сейчас этот бот (ContentAddBot [2]) позволяет каждому пользователю публиковать до 10 постов в сутки. После публикации на канале Капибара Новое [3] другие участники могут голосовать за понравившийся контент. Посты, которые набирают популярность, автоматически перемещаются на более широкие площадки, такие как Капибара Популярное [4] и и основной канал проекта топик Капибара Лучшее [5].
Веб-сайт проекта: Наш веб-сайт kapi.bar [6] в настоящее время функционирует в режиме заглушки, но уже предоставляет основную информацию и навигацию по проекту. Код сайта доступен на GitLab [7].
Основной канал и его сегменты: Наш основной канал new_old_pikabu [5] объединяет около 9000 участников. Здесь мы предлагаем различные площадки для общения, обсуждения идеи, помощи проекту и даже игр.
Например:
Чем я могу помочь проекту [8] - место, где участники могут предложить свою помощь.
Предложения и обнаруженные баги по ботам [9] - для предложений по работе ботов и обнаруженным багам.
Что мы любили на Пикабу и хотим сохранить [10] - обсуждение желаемого функционала.
Ссылки на этот чат [11] - для привлечения новых участников.
Пишем правила [12] - здесь можете помочь с написанием правил портала Капибара.
И многие другие, включая Флудильню [13], Душнильню [14] и Болтальню [15].
Пользовательский опыт: Наши участники активно участвуют в создании портала. Они пишут правила для портала [12], устраивают текстовые игры [16], обсуждают бэкенд, БД и API [17], а также фронтенд, UI/UX и дизайн [18].
Кроме того, регулярно составляют ежедневные дайджесты с новостями канала.
Сообщество и активности:
Известные авторы: На "Капибаре" публикуют свои работы известные авторы, такие как ZaTas, Гена Инженерный, LKamrad, ZaxaroiD, priori, PyKAMACTEPA, gleksoid, Crazy.MF, химические истории от gulyash_bez_piva [19], ofcWeKnow [20] и другие
Команда модераторов: Команда модераторов была собрана из участников сообщества, сначала набирались временные модераторы(на два дня), и по мере того как человек себя показывал, принималось решение оставлять еще на неделю и оставлять перманентным модератором.
Дайджесты: Каждый день в канале публикуются дайджесты — короткие обзоры самых интересных и обсуждаемых тем. Это помогает участникам быстро узнать о главных событиях дня.
Конкурсы и мероприятия: Регулярно проводятся конкурсы рисунков, квизы, текстовые игры и другие интерактивные мероприятия. Предыдущий конкурс был на рисунки на тему
Партизанский отряд: Это особая группа участников, которые, рискуя своими аккаунтами на Пикабу, рассказывают о "Капибаре". Благодаря их усилиям, многие узнали о нашем проекте, несмотря на противодействие администрации Пикабу.
На этом этапе команда активно занималась дизайном. Вместо того чтобы ждать окончательного дизайна, было принято решение использовать готовые компоненты из @quasar/extras [21] для создания прототипа. Было запланировано создать адаптивную версию сайта для различных устройств и добавить функцию переключения тем. Подробнее о структуре сайта можно узнать из CJM [22]. Мы разработали детальную карту путей пользователя, которая визуализирует все возможные действия и переходы внутри приложения. Это помогает нам понимать, как пользователи взаимодействуют с приложением, и
оптимизировать его для наилучшего пользовательского опыта.
Вот некоторые детали оттуда:
От четкого ТЗ было принято решение отказаться, писать его можно бесконечно долго и устареет оно ровно в тот момент когда допишем. Двигаться решили по Функциональным Требованиям [23]. Они были разработаны с учетом потребностей и пожеланий нашего сообщества. Они включают в себя:
Регистрацию и аутентификацию пользователей.
Создание, редактирование и удаление постов.
Взаимодействие с другими пользователями через комментарии и рейтинги.
Персональные настройки профиля и уведомлений.
И многие другие функции, такие как Профиль пользователя, Админка, Безопасность и приватность,...
Предварительная архитектура frontend [24]-части проекта и взаимодействие компонентов выглядела следующим образом:
На начальном этапе разработки мы рассматривали микросервисную архитектуру, которая позволяет разделять функциональные части приложения на независимые сервисы. Однако, после детального анализа, мы пришли к выводу, что для стартовой версии проекта лучше использовать монолитную, а отдельные чувствительные и высоко нагруженные модули вынести в микросервисы. Это позволит нам быстрее реализовать основной функционал.
Первичная HLD-схема backend-части:
Схемы взаимодействия с микросервисом авторизации и общая структура приложений:
Очевидно для монолита необходима реляционная БД, и самый удобный в данном случае вариант это Postgres. Схема базы данных разработана таким образом, чтобы обеспечивать эффективное взаимодействие между различными сущностями, такими как пользователи, посты, комментарии и рейтинги.
Текущий статус фронтенда на дату 7.09.2023:
Дизайн и Прототипирование:
В процессе разработки дизайна активно используются готовые компоненты из библиотеки @quasar/extras
для создания прототипа.
Адаптивность и Темы:
Разработана адаптивная версия сайта для мобильных устройств и ПК.
Внедрена функция переключения между светлой и тёмной темами.
Реализована система автоматического переключения между мобильной и десктопной ориентациями.
SVG иконки адаптированы для изменения цвета в зависимости от активной темы.
На главную страницу добавлен переключатель тем.
Компоненты и UI:
Созданы переиспользуемые компоненты: кнопки, текстовые поля, иконки.
Разработаны UI компоненты для тегов (в работе), выбора из списка и нижней части редактора поста.
Проработан переиспользуемый компонент InputUI.vue
.
Свёрстан блок для авторизации (десктоп).
Добавлена страница авторизации и страница 404.
Архитектурные Улучшения:
Внедрены стандарты для стилей всего проекта.
Стандартизированы переменные для цветов и шрифтов.
Переработана точка для обращения к внешним сервисам.
Рефакторинг всех значений ширины экрана, отвечающих за изменение стилей.
Интеграция и Хранение:
Создана заглушка для запросов к внешнему сервису.
Реализовано локальное сохранение выбранной темы.
Реализован функционал бесконечной ленты.
Добавлена JWT авторизация.
Текущий статус бэкенда на дату 7.09.2023:
Аутентификация и Авторизация:
Реализована авторизация пользователя через JWT токен. Сервис аутентификации, отвечающий за выдачу токенов и создание пользователей, находится в разработке.
Внедрена двухфакторная аутентификация для администраторов.
Основа интеграции монолита с auth service для создания и управления аккаунтами пользователей готова. Реализован API для редактирования профиля пользователя.
Регистрация пользователя на auth service и синхронизация с монолитом выполнена. Произведен переход на фреймворк FastAPI.
Лента Постов:
Пользователи могут создавать, редактировать и удалять свои посты.
Реализована общая лента постов со всеми записями, отсортированными по дате добавления.
Внедрена система голосования за посты.
Комментарии:
Пользователи могут комментировать посты. Реализован вывод дерева комментариев с настраиваемой глубиной и срезом комментариев. Комментарии можно редактировать в течение определенного времени после публикации, если за них еще не голосовали.
Внедрена система голосования за комментарии.
Тестирование и CI/CD:
Разработаны обширные тесты, покрывающие весь функционал ленты постов, комментариев и голосования.
GitLab pipeline на подходе, в котором запускаются тесты, проверяется форматирование кода и предоставляется отчет по тестам.
База Данных и Архитектура:
Планирование и разработка структуры БД монолитной части приложения в сотрудничестве с ДБА.
Предоставлена структура БД монолитной части приложения.
Дополнительные Функциональные Особенности:
Добавлена интеграция с Sentry для мониторинга ошибок.
Реализована логика повторного голосования для отмены предыдущего голоса. Авторы могут голосовать за свои комментарии и посты.
Введена конфигурация для установки временного окна редактирования постов.
Текущий статус дизайна на дату 7.09.2023:
Основные Элементы Дизайна:
Подготовлены прототипы главной страницы для мобильных устройств и десктопов. Десктопная версия доступна в светлой и темной темах.
Разработаны макеты профиля пользователя (для текущего залогиненного пользователя и для просмотра профилей других пользователей).
Создан дизайн профиля группы (сообщества).
Разработаны интерфейсы для входа и регистрации нового пользователя, включая отображение возможных ошибок.
Подготовлен дизайн функции добавления пользователя в игнор-лист.
Цветовая Палитра:
Рассмотрены различные варианты цветовых схем. Основной цвет выбран бирюзовым, после отбрасывания серо-розового и оранжевого.
Дополнительные Элементы Дизайна:
Произведена детализация экранов по секциям и распределение компонентов по местам.
Пересмотрены и скорректированы интерлиньяжи на шрифтах для мобильных устройств.
Собраны различные компоненты для десктопных и мобильных версий.
Разработаны различные варианты правого мобильного сайдбара для разных типов пользователей.
Добавлена кнопка подтверждения профиля через Telegram на странице неподтвержденного профиля.
Обсуждены и разработаны различные вариации компонентов, включая предварительный дизайн страницы комментариев.
Представлен дизайн ленты комментариев, включая внешний вид, формы ответов и сообщения об удалении комментариев.
Показаны предварительные макеты окон авторизации, включая отображение результатов проверки заполненных полей и подсказки для пользователей.
Основной сайт: kapi.bar [6] - здесь будет размещен портал Капибара.
Основной канал: Капибара [25] - здесь все актуальные новости проекта и сообщество.
Репозитории на Gitlab: backend [26], frontend [27], микросервис авторизации [28], бот для постинга [1], баянометр(будет) [29], микросервис работы с медиа(будет) [30], нагрузочные тесты [31].
Документация и планирование: Функциональные Требования [23], CJM [22], Список фичей [32].
Дневник разработки: Прямая Линия [33] - здесь актуальные новости только о развитии проекта.
Контент: Бот для публикаций [2], Новое [3], Популярное [4], Лучшее [34].
Соц.сети: VK [35], Instagram [36]
За проектом "Капибара" стоит команда энтузиастов, которые решили создать альтернативное пространство для общения и обмена контентом. Я, Ольга [37], инициатор проекта и Senior Backend Developer с опытом работы в Python, горжусь тем, что смогла объединить таких талантливых разработчиков. В нашей команде более 20 профессионалов с опытом от 4 до 14 лет в коммерческой разработке. Мы все вкладываем свои знания и навыки в создание "Капибары", стремясь реализовать проект, который будет отвечать ожиданиям нашего сообщества.
Так же буду дополнять здесь список тех участников группы разработки, которые захотят представиться:
Александр @larikov [38]
Михаил https://t.me/chicobambuni [39]
Тимур timur-bv@ya.ru [40]
Алёна @ally_g [41]
Эмин @Iameminmammadov [42]
Автор:
OlgaPy
Источник [43]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python3/387046
Ссылки в тексте:
[1] GitLab: https://gitlab.com/vortex185330/backend/bots/botgetcontent
[2] ContentAddBot: https://t.me/ContentAddBot
[3] Капибара Новое: https://t.me/new_kapibara
[4] Капибара Популярное: https://t.me/best_kapibara
[5] Капибара Лучшее: https://t.me/new_old_pikabu
[6] kapi.bar: https://kapi.bar
[7] GitLab: https://gitlab.com/vortex185330/backend/mock_page
[8] Чем я могу помочь проекту: https://t.me/new_old_pikabu/2680
[9] Предложения и обнаруженные баги по ботам: https://t.me/new_old_pikabu/45083
[10] Что мы любили на Пикабу и хотим сохранить: https://t.me/new_old_pikabu/2194
[11] Ссылки на этот чат: https://t.me/new_old_pikabu/639
[12] Пишем правила: https://t.me/new_old_pikabu/53057
[13] Флудильню: https://t.me/new_old_pikabu/2137
[14] Душнильню: https://t.me/new_old_pikabu/45652
[15] Болтальню: https://t.me/new_old_pikabu/78001
[16] текстовые игры: https://t.me/new_old_pikabu/252636
[17] бэкенд, БД и API: https://t.me/new_old_pikabu/622
[18] фронтенд, UI/UX и дизайн: https://t.me/new_old_pikabu/617
[19] gulyash_bez_piva: https://t.me/gulyash_bez_piva
[20] ofcWeKnow: https://t.me/ofcWeKnow
[21] @quasar/extras: https://quasar.dev/quasar-cli/quasar-conf-js/extras
[22] CJM: https://miro.com/app/board/uXjVMyojwYY=/
[23] Функциональным Требованиям: https://docs.google.com/document/d/1at0ebq36paSPFHYi-etHgyY1LAQ5BQEQswkAuHupDlw/edit?usp=sharing
[24] frontend: https://miro.com/app/board/uXjVMyKlTug=/
[25] Капибара: https://t.me/new_kapibara/
[26] backend: https://gitlab.com/vortex185330/backend/Vortex
[27] frontend: https://gitlab.com/vortex185330/frontend/vortex-frontend
[28] микросервис авторизации: https://gitlab.com/vortex185330/backend/ms_auth_vortex
[29] баянометр(будет): https://gitlab.com/vortex185330/backend/ms_repeatenometr_vortex
[30] микросервис работы с медиа(будет): https://gitlab.com/vortex185330/backend/media_service
[31] нагрузочные тесты: https://gitlab.com/vortex185330/backend/load_test_vortex
[32] Список фичей: https://docs.google.com/spreadsheets/d/1MOymIo3d4MVtVRV4VZ6j4HU7QouqFHc7D55-seXCLpU/edit?pli=1#gid=0
[33] Прямая Линия: https://t.me/straight_line_nop
[34] Лучшее: https://t.me/new_old_pikabu/133065
[35] VK: https://vk.com/kapibara_best
[36] Instagram: https://www.instagram.com/kapi_bary/
[37] Ольга: https://t.me/@FreeDaSw
[38] @larikov: https://www.pvsm.ru/users/larikov
[39] https://t.me/chicobambuni: https://t.me/chicobambuni
[40] timur-bv@ya.ru: mailto:timur-bv@ya.ru
[41] @ally_g: https://www.pvsm.ru/users/ally_g
[42] @Iameminmammadov: https://www.pvsm.ru/users/iameminmammadov
[43] Источник: https://habr.com/ru/articles/759598/?utm_source=habrahabr&utm_medium=rss&utm_campaign=759598
Нажмите здесь для печати.