Продолжу рассказывать о развитии Капибары, опенсорсном проекте, цели которого воспроизвести лучшее что было на пикабу и не наступить на их же "грабли". Первая часть здесь: https://dzen.ru/media/bar_kapibar/kapibara-novyi-staryi-pikabu-65574b0ff6d9c13af25854f5. Первый официальный пост о прогрессе в разработке на новом сайте здесь: https://www.kapi.bar/post/dnevnik-razrabotki-kapibary-ot-10-xi-2023. Но обо всем по порядку.
Пару недель назад у нас стартанул полу-закрытый альфа-тест. Сейчас выдаём ранний доступ на сайт kapi.bar отважным авторам-альфатестировщикам и активным комментаторам взамен просим слать нам багрепорты и пока быть самим себе модераторами. Функционал для создания постов, комментариев и выставления оценок для них есть. Ленты "Новое", "Тренды", "Топ", "Обсуждаемое" и поиск по тегам уже работают и доступны для чтения всем желающим.
📸 Изображения
Картинки в постах - это так привычно, что кажется само собой разумеющимся. Однако, чтоб добавить возможность загрузки изображений на сайт, команде разработки пришлось знатно потрудиться :)
Для максимальной скорости и эффективности выгрузки изображений из любой точки Земли мы внедрили на сайт CDN - Content Delivery Network. Эта система позволяет оптимизировать загрузку, распределяя ваши картинки по серверам, что минимизирует задержки и ускоряет отображение.
Также была реализована функция проверки размера изображений и их сжатие. Это гарантирует, что слишком большая фотография не заставит сайт лагать или работать медленнее. Мы понимаем, что такое решение может расстроить фотографов и тех капибаринов, которым важно разглядеть все мельчайшие детали в первозданном виде. Однако покуда наш сайт молод и мал, к сожалению, это наиболее оптимальное решение для обеспечения его работоспособности.
На наш сайт помимо обычных картинок вы можете загружать и гифки (.apng, .gif, .webp) размером до 5 Мб. Каждое загруженное изображение конвертируется на стороне бэкенда в webp для оптимального отображения и снижения нагрузки на инфраструктуру.
Для не прогружающихся картинок - из-за плохого интернета, проблем на сайте или в браузере - мы добавили плейсхолдер - специальную рамку, которая рисуется вместо проблемного изображения.
Ограничение количества медиа в комментариях. Введено ограничение на количество медиафайлов в комментариях до двух изображений, чтоб не перегружать интерфейс и не удлинять сверх меры комментарий. При попытке добавить третью картинку сайт предложит создать отдельный пост.
🤖 Бот для Верификации через Telegram.
Для упрощения процесса верификации профилей через Telegram был создан специальный бот. Он позволяет пользователям верифицировать свои аккаунты всего в три клика.
Для бота верификации добавлена поддержка создания Docker-образов в среде GitLab-CI.
Это означает, что процесс развертывания и обновления бота теперь может быть полностью автоматизирован с использованием Docker-контейнеров. Внедрение GitLab-CI обеспечивает непрерывную интеграцию и доставку (CI/CD).
💭 Комментарии
Почти одновременно с началом альфа-теста была завершена разработка дерева комментариев. Мы реализовали сами комментарии а так же систему управления их вложенностью - это значит, что когда ветка уходит вправо на 4 (для телефонов) или 9 уровней (для компьютеров), новые комментарии оказываются снова слева , однако теперь с гиперссылкой на родительский комментарий. Это улучшает визуальное восприятие длинных веток и предотвращает излишнее дробление обсуждения.
Заложен первый камень в защиту сайта от ботов. Была реализована верификация пользователей через телеграм и ограничение на комментирование, голосование и создание постов для тех, кто её не прошёл. Такая система позволит усложнить жизнь ботоводам, ведь завести 100500 почт намного легче чем 100500 телеграм-аккаунтов. От того, что они у нас массово зарегистрируются, особого вреда не будет, а вот от того, что они будут клепать «нужные» посты, бурстить / топить «нужные» комментарии / посты — вред очевиден
(Если этого не сделать, будет как на Пикабу сейчас)
Для живых, пока еще неверифицированных пользователей, мы реализовали интуитивно понятные всплывающие сообщения о необходимости подтверждения аккаунта при попытках комментирования, голосования или создания постов. Это улучшает пользовательский опыт, предоставляя чёткие инструкции о необходимости верификации для полного доступа к функционалу платформы.
Индикация новых и непрочитанных комментариев. Сейчас ведётся активная работа над системой визуальной индикации, которая будет выделять новые и непрочитанные комментарии в ленте ответов. Это значительно упростит отслеживание активности в дискуссиях и поможет пользователям не упустить важные моменты обсуждения.
🏷️ Теги
Фильтрация по тегам. Разработали ленту постов с поиском по одному или нескольким тегам. В нее можно перейти как с бокового меню(вкладка «Теги»), так и напрямую из поста кликнув по тегу. В открывшейся вкладке вы можете добавить дополнительные теги по которым будет осуществляться поиск постов.
Пока только на бэкенде, но уже сделали API отдающее список популярных тегов для быстрого выбора тегов на странице поиска по тегам.
Установили лимит в 10 тегов на пост, исключая специальные теги, такие как «Своё», «Авторское» и «Телеграм». Это предотвращает перегрузку постов избыточным количеством тегов и способствует более точной категоризации контента.
Специализированные Теги «Своё» и «Авторское». Ведётся разработка нового блока в интерфейсе создания поста для выбора этих специальных тегов, включая подсказки, которые объясняют их значение. Тег «Своё» предназначен для контента, созданного пользователем лично или имеющего к нему прямое отношение. Тег «Авторское» применяется к контенту, в который пользователь вложил своё время, старания и творческие усилия
👁️ Лента «Просмотренное»
На бэкенде реализован API для управления и вывода просмотренных постов. Это означает, что теперь у нас есть бэкенд-структура, которая способна обрабатывать и передавать данные о просмотренных пользователями постах. Однако, эта функциональность пока что не интегрирована в пользовательский интерфейс и доступна только на уровне сервера.
Также на бэкенде начата работа над механизмом скрытия просмотренных постов из ленты. Эта функция также пока не реализована, но находится в активной разработке
🔥 Лента «Тренды»
За последнее время мы также сделали ленту «Тренды», в которую попадают положительно оцененные пользователями посты.
В данный момент алгоритм выходы в Тренды следующий: рейтинг поста больше 25 и более 80% плюсов. Сортировка в ленте осуществляется на основе двух ключевых параметров: процента положительных оценок и времени публикации поста.
Хотя лента «Тренды»(как и «Новое» и «Топ») визуально кажется бесконечной, посты на самом деле подгружаются постранично (пагинация). Это означает, что контент из бэкенда на фронтенд отдаётся не одновременно, а порциями. Введено ограничение в 20 постов на страницу для лент. Это решение позволяет ускорить загрузку контента и снизить нагрузку на базу данных.
Существующий алгоритм сортировки в ленте «Тренды» не является финальным, и мы планируем продолжить экспериментировать для определения наиболее оптимальных критериев сортировки. Как минимум, следующим шагом добавим влияние наличия тегов «Своё» и «Авторское» на упрощение выхода поста в Тренды. После добавления функционала скрытия постов продолжим искать наилучший алгоритм.
🖋️ Редактор постов
Добавлено ограничение по количеству символов в заголовках постов на Капибаре. Это необходимо для более красивых URL-адресов и менее загруженного внешнего вида сайта.
Ещё теперь можно загружать видео, правда пока что только с YouTube и Coub. В ближайшем будущем возможно расширение функционала возможностью добавления видео с других платформ, например из ВКонтакта. К сожалению, прямая загрузка видео на сайт пока невозможна ввиду ограниченного бюджета проекта. т. к. стоимость хранения и обработки зависит в том числе от количества просмотров.
👤 Профиль пользователя
Наконец-то можно поставить свою аватарку! Также близится к своему завершению доработка функции «О себе» - вы сможете написать какую-то фразу в своём профиле, которая будет видна остальным пользователям… Вернее, написать вы можете уже сейчас, просто пока что информация не сохранится. Но это скоро починим
Помимо этого, была исправлена ошибка 404, которая возникала при попытке доступа к страницам профилей пользователей.
И, наконец, важное изменение в создании профиля - нами была введена проверка на уникальность имени пользователя, игнорирующая регистр букв. Это означает, что имена типа "kapibar" и "KaPiBaR" теперь считаются идентичными с точки зрения системы.
🔨 Прочие Улучшения
- Вёрстка. Исправлена вёрстка для обеспечения корректного отображения сайта на экранах с шириной 800 пикселей.
- Были отрисованы новая иконка сайта и аватар по-умолчанию, спрототипированы страницы для удалённых по разным причинам постов.
- Внедрено ограничение на количество запросов на логин, сброс пароля и регистрацию на уровне API. Эта мера безопасности направлена на борьбу с DDoS-атаками и другими видами злоупотреблений, повышая стабильность и безопасность платформы.
- Определение темы. Теперь сайт автоматически подхватывает тему, установленную на устройстве.
- Проведена работа по исправлению ошибок в русском языке на различных страницах сайта. Граммар-наци ликуют.
Устранено более 150 мелких и значительных ошибок, обнаруженных отважными авторам - альфа-тестировщиками и сообщенных через систему репортов.
🪲 Баги.
Первых авторов мы решили немного научить в тестирование и выдать им инструмент для отправки багрепортов. Реализовали через телеграм-бота, который принимает сообщение+медиа, валидирует и отправляет их в сервисный телеграм-канал. Первые пользователи его освоили, помогали друг другу с формулированием багрепортов. На прошлой неделе мы прикрутили интеграцию телеграм бота с кликапом(используемый нами таск-трекер), теперь багрепорт от пользователя преобразуется сразу в таску в специальном разделе, откуда в дальнейшем их сортируем и обрабатываем.
И так же есть понимание что пользователи хотят видеть обратную связь со стороны разработчиков что их баги приняты, взяты в обработку или исправлены. Первое время решали это через ручную пересылку в топик "Пофикшенные баги".
Часто мелкие баги быстрее исправить «налету», чем добавлять в таски, описывать, пересылать и уведомлять. И поэтому сейчас мы работаем над автоматизацией, чтобы каждый найденный вами баг не остался без обратной связи от команды.
И прямо сейчас работаем над обратным процессом. Т. е., когда задача отмечается как выполненная, будет отправляться уведомление обратно в Телеграм с обновлённым статусом.Также есть баг-репорты, которые не являются багами. Например, когда проблема не на сайте, а в куках пользователя. В таких случаях разработчик будет писать комментарий к задаче с инструкцией, что нужно сделать, чтобы проблема прошла, а бот будет отправлять этот комментарий пользователю.
🙏 Огромная Благодарность нашим Авторам-Альфа-Тестировщикам!
Мы не можем упустить возможность выразить нашу глубокую благодарность всем альфа-тестировщикам, которые помогли нам обнаружить и устранить баги на нашей платформе. Ваша обратная связь была неоценимой, и мы благодарны за каждый отправленный вами баг-репорт!
🌟 Особая Благодарность Десяти Самым Активным Тестировщикам:
NoAdO – 66 баг-репортов
Wtagn25 – 38 баг-репортов
DrMegabyte – 29 баг-репортов
vita – 28 баг-репортов
vervolph – 24 баг-репортов
Sergej_Serov – 22 баг-репортов
mik_s1d – 19 баг-репортов
Archi – 18 баг-репортов
jewellerpotato – 17 баг-репортов
Eisenporn – 16 баг-репортов
🌍 Благодарим всех остальных альфа-тестировщиков отправивших нам репорты об обнаруженных багах:
Blood, Yarilo23, Rofs, UglyElf, gambitushka, userfortest, ZenitTTLMir1B, Xrenotik, LinDess, Marta, Lazolvo, olvik, Innokenti4, uk_kate24, Dnocompany, Unionsquare, L0z4, Kvasnik, Xena, rammdarkfunny, Tiamin, Jugabut, Dr.Hannibal, BulkaSmaslow, Kyrillbeisel, KonstantyPL, findeler, aice4, gulyashbezpiva, appossumoid, FreeDaSw, Wesker, alexvektor, Dildiy, Cloud, oriaraniar, BabudaiAga, VODKA5665, WandWanderer, PaulHirsch, Hokum62, Nojnichki, Bespiril, indie_dev_01, Beer3erk, BeerFather, dones, stormspeller, prmn, ITMan96, Custom_KseniEv, loonyloon, Darti163, nameless.second, Shady311, Pilirom, veterinar, lenanexman, socialware, zzaec, kritbis, kusokcheloveka, statusspb, Bowjob, ctulhu31, SergeyRY, R.Melvin, Kitsu-NeshKaa, Rilwing, Ahremkin, ibraman, Marb.Ivanna, SexFox, camelos, HugReed, Hippopocat, Chaika312, hunterpo, Exfaded, SIGILLITE, chief, tanur_orican, gelevaya, ally_me, Natt, Hegny, shaehl, EpicMorg, Vojdelenec, margent, timur_bv, CircusBirdEli, Aragorn, Phyros, HARDiNA, Kisati, SarcasticImp, Akyndro, V27S, ivanisenko, LeSpectateur, lostseaman, No_Name, Bertolucci, vladonlink, OldKatso, Vanok, derBeobachter, Born_Sesh.
Записаться на альфа-тест: https://t.me/new_old_pikabu/548368/548369
Помочь в разработке проекта: https://t.me/new_old_pikabu/2680/631553
Репозиторий проекта: https://gitlab.com/vortex185330/
Основной сайт: https://www.kapi.bar/
Еще много всего предстоит сделать, но уже есть что посмотреть и пощупать