ESPN'This one hurts': How are Cowboys reacting to third straight 1-2 start?PunchAtiku faults FG over fresh $1.5bn World Bank loanThe Jerusalem PostLikud election candidate Bonzel says he wishes former hostage were 'returned to Hamas,' apologizesInquirerCamarines Sur placed under state of calamity over dengueESPN DeportesSemana 3 NFL: De la A a la Z, según el Gurú de las DiagonalesRadio TimesTop 10 Picks of the Day – Friday 2 OctoberScreen RantGod of War Laufey - Release Date, Preorders, Price, & PlatformsLa PresseAllégations de racisme au SPVM | Le dossier transmis au DPCPIl Sole 24 OreUstica, la Francia pronta a collaborare, pm verso ritiro archiviazioneسكاي نيوز عربيةمسؤول: محادثات أميركية إيرانية مرتقبة بوساطة قطريةFotogramas'Monstruo' recupera el vuelo en Netflix con una temporada 4 cautivadora, pero sigue lejos de la brillantez de 'Dahmer'SportstarVozinha, FIFA World Cup hero of Cape Verde, opens up consequences of fame after FWC 2026
The Daily Newsstand · Free, Always
Monday, September 28, 2026

Klark + Klara: корпоративный мессенджер и таск‑менеджер, которые живут на нашем сервере

Translate

Рассказываю, что мы собрали, как это устроено и почему связка «чат + задачи» оказалась важнее, чем каждый продукт по отдельности.

С чего всё началось

Рабочая переписка в большинстве компаний живёт в личных мессенджерах. В Telegram висят «Отдел продаж», «Бухгалтерия», «Срочно!!!», а задачи из этих чатов теряются через два экрана прокрутки. Уходит сотрудник — и уносит в телефоне историю переписки и файлы.

Отдельно стоит таск‑менеджер, куда задачи переносят руками, если вообще переносят. Нам нужно было три вещи: переписка и файлы остаются внутри компании, задача ставится прямо из сообщения, а всё вместе разворачивается на своём железе одной командой, без подписок и внешних облаков.

Еще хочу выделить одну из больных тем, это способность кастомизации софта под свои нужды, в требованиях для комфортной работы нам требовалось иметь возможность пилить и кастомить проект «под себя», выражалось это в самых разных начинаниях, банально хочется чтобы было красиво/плавно/разнообразно, где‑то кастомные смайлы добавить, где‑то фоны нарисовать для чатиков ну и самое важное, чтобы софт смог закрыть самые больные моменты в бизнесе.

Так появились два продукта в одной инфраструктуре: Klark — мессенджер и Klara ‑таск‑менеджер с базой знаний. По отдельности они закрывают свои задачи. Вместе разговор превращается в задачу в два клика, а задачи на день видны прямо рядом с перепиской.

Переписка

Базовый набор привычен любому, кто пользовался Telegram, и это сделано намеренно: людям не нужно переучиваться. Есть личные чаты, группы, каналы и «Заметки для себя» — чат с самим собой, который всегда первый в списке.

Для больших команд есть супергруппы — группы с темами, как форум. Участники общие, а обсуждения разложены по темам: «Релиз», «Инциденты», «Идеи». В каналах к постам можно оставлять комментарии, а в группах любое сообщение можно «обсудить в треде», чтобы ветка не засоряла общую ленту.

С сообщениями можно делать всё, что ожидаешь: отвечать (в том числе свайпом), пересылать, редактировать, удалять у себя или у всех, закреплять. Реакции показывают, кто их поставил, а в меню своего сообщения видно «Прочитали 3 из 7» со списком и временем.

Из фич, которые полезны в работе: отложенная отправка («через час», «завтра в 9:00», своё время), черновики, которые подхватываются на любом устройстве, упоминания @логин и @all, которые пробивают даже заглушённый чат, «печатает…», разделитель «Новые сообщения», поиск по всей переписке и по конкретному чату (Ctrl/Cmd+F).

Голос, медиа и файлы

Голосовые записываются жестами: зажал микрофон — пишешь, отпустил — отправилось, потянул вверх — запись «замкнулась», влево — отмена. Любое голосовое можно расшифровать в текст, и это делается на вашем же сервере: аудио никуда не уходит. На телефоне голосовое можно слушать через разговорный динамик — поднёс к уху, и звук ушёл в «трубку».

Фото и видео показываются в ленте целиком, с просмотром жестами. Файлы загружаются кусками, поэтому проходят и многогигабайтные архивы. Каждое вложение проверяется антивирусом ClamAV: пока идёт проверка, файл нельзя скачать, а заражённый не доставляется вовсе.

Звонки и конференции

Аудио и видеозвонки в личных чатах и группах, демонстрация экрана, входящий вызов приходит пушем, даже когда приложение закрыто. Идущий звонок в группе показан плашкой «Присоединиться», а итог остаётся в переписке. Медиасервер LiveKit тоже разворачивается у вас.

Календарь и панель «Сегодня»

Встречи с участниками, местом и напоминанием. Участники получают уведомление о приглашении, переносе и отмене, все — напоминание перед началом, организатор видит ответы «Приду / Не приду».

На широком экране справа от переписки живёт колонка «Сегодня»: непрочитанное, встречи на сегодня и завтра, мои задачи из Klara с кольцом прогресса спринта и тумблер «Не беспокоить», который выключает уведомления на сервере, а не просто прячет их.

Одноразовые ссылки для секретов

Пароль или ключ доступа не стоит оставлять в истории чата. Одноразовая ссылка открывается ровно один раз, живёт от часа до двух суток, рядом есть генератор паролей и список «забрали или нет». Получателю не нужна учётная запись в Klark и пароли сгенерированные в этом меню не хранятся на сервере.

Боты и оповещения

У Klark есть свой Bot API: бот пишет в чаты по токену и может получать события на вебхук. Самый частый сценарий это оповещения: мониторинг, CI, NAS и бэкапы шлют сообщения в канал, который читает вся команда. Вебхуки ботов не могут ходить по внутренним адресам сети, чтобы бот не стал лазейкой внутрь.

curl -X POST "https://klark.example.com/api/v1/bots/self/messages/<id_чата>" \
  -H "Authorization: Bot <токен>" \
  -H "Content-Type: application/json" \
  -d '{"body":"Бэкап завершён: 42 ГБ, 7 мин"}'

Для объявлений есть официальный канал новостей с галочкой: он есть у каждого сотрудника, выйти из него нельзя, а владелец видит, кто прочитал каждый пост.

Мелочи, из которых складывается «удобно»

Папки‑вкладки со счётчиками непрочитанного, истории на 24 часа с реакциями и ответами, стикеры с импортом наборов из Telegram, почти тысяча эмодзи с поиском по‑русски и по‑английски, эмодзи‑статус у имени. Светлая и тёмная темы, фоны переписки, масштаб ленты по Ctrl+колесо. На телефоне реализован тактильный отклик, реакции по одному касанию и переход в следующий непрочитанный канал жестом.

Клиенты

Klark работает в браузере и как приложение для Android, Windows и macOS (Apple Silicon и Intel). Функциональность везде одна, прочитанное на телефоне сразу гаснет на компьютере. Настольные приложения умеют показывать экран в звонке, сидят в трее и сами предлагают перезагрузку, если интерфейс завис.

Klara — задачи и база знаний

Klara задумывалась как замена связке Jira + Confluence для компании, которой не нужны сотни настроек, а нужен понятный процесс.

Обзор недели

С этого экрана руководитель начинает понедельник: сколько задач на неделе, сколько завершено, на приёмке и просрочено, а ниже — раскладка по людям или по проектам с планом и фактом часов. Фильтры по командам, сотрудникам, приоритету и статусу показывают, у кого перегруз.

Проекты и задачи

Работа организована в проекты (с конечным результатом) и продукты (ведутся постоянно). Проект может быть открытым, и тогда любой сотрудник вступает сам, или закрытым, с участниками и ролями.

Жизненный цикл задачи простой и строгий: «Не начата → В работе → На приёмке → Завершена», либо «Отменена». Ключевая идея — приёмка: исполнитель не закрывает задачу сам, он сдаёт её постановщику, а тот принимает или возвращает в работу с причиной. Это убирает вечное «я сделал» / «а я не видел».

У задачи есть несколько исполнителей с плановыми и фактическими часами, чек‑лист, приоритет, сроки, вложения (скриншот вставляется из буфера), комментарии с @упоминаниями, связи между задачами и полная история изменений. Крупные работы собираются из подзадач: такая «объединяющая работа» сама в спринт не ставится и закрывается после своих частей. Регулярные задачи вроде «еженедельного отчёта» создаются сами по расписанию.

Недельные спринты без ручной рутины

Спринт в Klara равен неделе. Задача попадает в спринт, только когда у неё есть срок и хотя бы один исполнитель, иначе она лежит в бэклоге. На границе недели спринт закрывается сам: фиксируется снимок итогов, а незавершённое переносится в следующую неделю с пометкой о переносе. Руководителю не нужно ничего «закрывать» по пятницам, а история не переписывается задним числом.

Задачи видны тремя способами: доска с колонками, привязанными к статусам (перетащил карточку и сразу сменился статус), календарь (перетащил на день — сменился срок) и бэклог.

Вики

База знаний разложена по пространствам с правами доступа: открытые видны всем, ограниченные скрыты от тех, у кого нет роли. Редактор визуальный: таблицы, колонки, спойлеры, код, видео с YouTube, RuTube и VK, чек‑листы. В страницу можно вставить живую карточку задачи или список задач проекта.

Для документов с жизненным циклом есть больше, чем «сохранить»:

  • у каждой страницы есть версии с восстановлением;

  • страницу можно отправить на согласование нескольким людям, после чего она становится утверждённой;

  • есть отложенная публикация и отметка «Ознакомлен» для регламентов;

  • любой фрагмент можно пометить как «вопрос» или «требует актуализации», скрыть от читателей или превратить в задачу.

Есть готовые шаблоны: техническое задание, постмортем, регламент, протокол совещания, требования.

Связка: зачем они вместе

Главная фишка появляется, когда два продукта знают друг о друге.

Задача из сообщения. В меню любого сообщения в Klark есть пункт «Создать задачу».

Открывается карточка, в которой сообщение уже приложено цитатой, а автор сообщения подставлен исполнителем. Остаётся выбрать проект, срок, спринт и решить, нужна ли приёмка. После создания в чат приходит карточка со ссылкой на задачу, и все видят, что вопрос не потерялся.

Задачи рядом с перепиской. Панель «Сегодня» в Klark показывает мои задачи из Klara и прогресс спринта, не открывая таск‑менеджер (она видна справа на первом скриншоте). Сам таск‑менеджер открывается из панели Klark одной кнопкой.

Интеграция идёт через API‑ключ, который администратор выпускает в Klara, а сотрудники сопоставляются по логину. Если Klara не нужна, Klark работает и без неё: пункты интеграции просто не показываются.

Безопасность

Оба продукта сразу проектировались для размещения внутри компании, поэтому безопасность здесь не опция:

  • двухфакторная аутентификация TOTP (Яндекс Ключ, Google Authenticator и аналоги), в Klara обязательная для всех;

  • блокировка учётной записи после серии неверных паролей и неверных кодов 2FA, так что перебирать шесть цифр бессмысленно;

  • токен доступа живёт только в памяти, долгоживущая сессия лежит в httpOnly‑куке, недоступной скриптам; повторное использование старого токена считается кражей и гасит всю цепочку сессий;

  • строгая политика CSP, защита от CSRF, проверка аватаров и стикеров по содержимому, а не по расширению, антивирус для вложений;

  • пароли и коды не попадают в логи, все значимые действия пишутся в журнал аудита.

Про данные коротко: переписка, файлы, расшифровка голосовых, звонки и задачи обрабатываются на вашем сервере.

Что ломалось по дороге

Пуши на vivo и OPPO не приходили. Сервер не шлёт пуш тому, кто сейчас в сети. Но приложение, свёрнутое на этих телефонах, продолжало держать соединение, и сервер считал человека онлайн. На Samsung и Pixel система замораживает фон, поэтому там всё работало, и мы долго не понимали, в чём дело. Теперь «в сети» значит, что окно на виду и за последние пять минут было касание или нажатие клавиши.

Выкидывало на экран входа. Повторное использование старого refresh‑токена считается кражей, и сессия сразу гасится. Звучит правильно, пока у человека не открыты две вкладки, которые обновили токен одновременно: вторую признавали воровкой. Теперь у параллельных запросов есть 15 секунд, чтобы разобраться между собой.

Голосовые выглядели как видео. Некоторые браузеры на Android присылают запись с типом video/webm, а на Mac такой звук вообще не играл. В итоге сервер перекодирует все голосовые в m4a.

ClamAV признал вирусом наш собственный APK. Ложное срабатывание, сигнатуру добавили в исключения, но осадочек остался.

В чате на 13 человек нельзя было упомянуть половину. Подсказка после «@» показывала первых семь участников и не листалась. Нашёл это коллега через три недели после запуска. Самые глупые баги живут дольше всех.

Серверная редакция и LDAP

Для поставки «на свой сервер» есть серверная редакция. При первом запуске клиент показывает экран подключения, где сотрудник указывает адрес и порт сервера своей организации. Клиент проверяет, что там действительно Klark, и узнаёт имя сервера и доступные способы входа.

На экране входа можно выбрать тип авторизации: облачная учётка, заведённая администратором, или LDAP, то есть логин и пароль корпоративного домена (Active Directory, OpenLDAP, FreeIPA). Учётная запись из каталога создаётся сама при первом входе, а имя, почта и должность подтягиваются из атрибутов каталога. Пароль доменной учётки Klark не хранит, его проверяет сам каталог. Двухфакторка и блокировка перебора работают для обоих способов одинаково.

Развёртывание

Всё поставляется как Docker Compose. На чистом Linux‑сервере достаточно одного скрипта: он сгенерирует секреты, выпустит сертификат, поднимет базу, накатит миграции и запустит сервисы. Обновление сводится к git pull и пересборке, данные в томах при этом не трогаются.

Стек без экзотики, чтобы его мог сопровождать обычный админ:

Klark

Klara

Сервер

Python, FastAPI

Node.js, Express

Данные

PostgreSQL 16, Redis

PostgreSQL 16

Клиент

React (веб), Capacitor (Android), Electron (Windows, macOS)

React

Дополнительно

LiveKit (звонки), ClamAV (антивирус), локальная модель распознавания речи

—

Сервисы, которые не нужны, можно не поднимать: без LiveKit скрываются кнопки звонков, без антивируса вложения помечаются как непроверенные, без Klara пропадают пункты интеграции.

Для чего это всё

Главное, что мы преследовали при разработке данного набора приложений, это соединить весь нужный функционал для компании в софт, в котором все будет выглядеть красиво и удобно, и чтобы этим всем было приятно пользоваться.

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.