Время раскрыть задумку...
С моей стороны уже были открыты карты по новому проекту можно почитать тут : Тестирование - остановка - новый проект
Я немного задержался с выпуском апдейта по программе, работа + правил много мелких дефектов.
Как и говорил бэк пишется онли мной, фронт - не буду греха таить пишется на AI инструментах. Но опять же как пишется, с наборов Front-end файлов в 700 ед AI справляется туго (начал уже на 400 выдавать) в чем определяется? Выдает много багов в итоговой сборке, приходится править вручную и это отнимает время, по сути то на то и выходит :D
Что за программа? Это смесь Mattermost + Discord. Старался взять лучшие фичи от туда и от туда. В основном программа нацелена на коммерческое использование. Зачем я вообще начал делать это? Вот не знаю кому и как - мне не нравиться Mattermost \ Slack. Одни только треды чего стоят, группировка чатов, а звонки? Вот надо же взять, скопировать ссылку, собрать людей, а если они еще не авторизованы в звонилке компании (Такое бывает, выкидывает, SSO плохо работает) - еще впусти всех. Ну это бред. Особенно мне как любителю discord-ы с удобными звонками и тг с удобными чатами.
Так вот, в программу я взял лучшее из наработок в плане пользовательского интерфейса и старался совместить с наилучшими практиками которые нашел на просторах интернета.
В программе есть\будет:
Личные чаты
Сообщения
Звонки
Анализ задач (автоматический поиск главных слов "Сегодня, сделай, завтра, посмотри, не забудь, т.д.) и создание автоматического TODO листа
Канбан доска
Доска привязывается к задачам назначенным Вам или назначенные вами в Jira. И создает автоматически чат, добавляет туда "Автора" и "Исполнителя" если есть человек который подписался на отслеживание - тоже попадает в чат, либо можно добавить в ручную.
Статус чатов = статусам задач
Серверы \ комнаты - аналог общих чатов в Discord и ТГ
Создание тем
Модерация прав
Группировка тем
Создание голосовых комнат
Общий звонок внутри комнаты
Демонстрация экрана
Создание темы "Тред"
Внутри лежат треды, нажимая на определенный тред можно попасть в комнату чата по треду. Это удобнее чем треды в MM которые создаются из простого сообщения.
Создание приглашений в группу
Для чатов:
Полная поддержка PlantUml диаграмм с автоматической конвертацией в SVG. Можно описание посмотреть и картинку
Поддержка синтаксиса кода:
C++
Python
Go
Java
CSS
HTML
C#
PHP
JS
Поддержка MD формата текста (кто-то любит в таком писать, тем более поддерживает таблицы)
Пересыл сообщений
Закрепление
И много других дополнительных функций
TODO лист задач
Создаются автоматически из контекста
Создаются вручную
Отдельный сервис ботов
Преднастроенные будет только 3 бота и то для работы (в будущем возможно пораскину мозгами и придумаю действительно нужных для работы или общего пользования)
Уведомления о встрече из почты
Уведомление о GitLab изменениях при подписке на определенную ветку
Уведомления из Grafana об Alert-ах
Многое еще что в разработке и пока не раскрыто. Но в планах внедрить AI модель на BE для определенных задач.
Описана общая структура системы, но подробности я не описываю во всех красках...
Формат
Приложение имеет 2 формата для компаний и для личного использования.
Компаниям важно иметь все свои данные у себя под рукой, поэтому тут прописывается отдельный URL для подключения к сервисам которые развернуты на их стороне.
Интерфейс так же меняется.
Для обычных пользователей не доступны функции TODO, Канбан доски, привязки к Jira или GitLab. Они им просто не нужны. Поэтому интерфейс немного отличается.
На архитектуре рисунок 1 - указано HTTP, почему так? Сейчас приложение развернуто в докере локально, мне тут не нужно дополнительное шифрование. Когда будет деплой (если будет) на сервер компании - в программе уже все готово к работе по HTTPS.
В чем плюсы приложения? Ему не нужен (МАХ). Все сообщения даже сейчас шифруются и дешифруются только на стороне клиента. Какие для этого использованы технологии - расскажу в сл. посте. Но сама суть в том что Дешифровать если получишь энкриптор получиться максимум один чат. Если пользователь решил переслать из одного чата в другой, то клиент выступает дешифратором и шифратором. Нагрузка есть, но минимальная, по моей задумке нагрузка в 2мс на сообщение из чата с 5к пользователями.
MongoDB для сообщений это временное решение. Мне было проще JSON модели делать и накидывать стиль. Позже она переедет в другую No SQL базу.
Что по звонкам? По звонкам интересно. По документации и оптимизации кода в моменте на комнату может быть 3к пользователей при условии 10 спикеров. Если будет 100 спикеров единомоментно - то 1.6-1.8к. Как будет в действительности покажет только практика. LiveKit почти не ест ресурсы и очень оптимально работает. Но кодек настраивать очень долго.
Защита от бутфорсов - имеется. Учтено сразу 2 формата:
Единомоментный запрос в кол-ве Х
Валидация кол-ва запросов с авто блокировкой последующих
Получается так, если злоумышленник захочет подобрать пароль и отправит 100 или 200 запросов в момент - они просто не пройдут шлюз. Он их не пропустит. Так еще и заберет 4 рандома и наложит ограничение.
От инъекций и прочих ненужных вещей используется санитайзер. Это значит, что все запросы, где потенциально могут быть отправлены данные, проверяются и валидируются.
K8s настроен. Предполагается, что основные сервисы работают на двух-трех чатах, а затем масштабируются в зависимости от нагрузки. Однако, если в чате менее 100 пользователей, одного сервиса хватит на 10–15 чатов. LiveKit масштабируется в зависимости от количества людей и комнат.
Что по ресурсам, сейчас приложение кушает около 450мб ОЗУ. Средняя латентность запросов 50-0мс и это на докере десктоп через WSL. По звуку - работаю над ним. Хочется сделать качественный шумодав.
Тестирование
Определимся с термином «хочу». В контексте разработки это означает «представляю». Я хочу запустить закрытое тестирование приложения на 500 человек в конце марта — середине апреля. Почему закрытое? Всё просто: аренда сервера для этого теста будет полностью за мой счёт, без спонсорской поддержки. Я планирую использовать виртуальный сервер с тарифом в районе 7–9 тысяч рублей (цены, конечно, кусаются).
Если сервер справится с нагрузкой в 500 пользователей и будет работать стабильно, я продолжу тестирование и расширю окно для пользователей. Если же возникнут проблемы, то придётся:
* Оптимизировать код.
* Поработать над улучшением запросов.
На данный момент у меня готовы две версии приложения:
* WEB.
* Windows.
Версии для iOS и Android также будут разработаны, но в первой итерации, скорее всего, они будут представлены в виде веб-вьюшек. Я адаптировал интерфейс под мобильные устройства, но создание отдельных версий пока не в приоритете. Если у вас есть идеи, как сделать текущий код совместимым с мобильными платформами, буду рад обсудить это в личных сообщениях.
Функционал в тестировании будет урезан примерно на 30% от фактически разработанного. Почему так? Некоторые фичи очень тяжелы в описании. Какие успею добить - залью на тест.
Опрос
Вообще много кому из знакомых показывал функционал и интерфейс - очень довольны. Плавность, логика - все есть. Нету ИИ-ых эмодзи (Я заменил их на прямую отрисовку в коде, вес приложения меньше, нагрузки практически нету). Острые углы от ИИ - тоже сглажены. Подправлена логика и получилось немного сократить код.
Что думаете? Жить проекту или не жить?)) Да, знаю есть куча заменителей и можно сказать "Очередная хрень под копирку". Но как показывает практика в нашей стране - все к чему у людей растет интерес рано или поздно блокируется... А приложений сделанных для людей а не для "маркетинга" - очень мало.


ИТ-проекты пикабушников
785 постов3.5K подписчиков
Правила сообщества
0. Запрещены посты вне тематики сообщества
1. Уважайте труд людей, пишите только конструктивную критику,
2. Не выкладывайте информацию по своему проекту чаще 2ух раз в месяц