Как я создал собственный менеджер задач Делайка
Так появилась Делайка — менеджер задач, созданный «изнутри» под реальные нужды команды.
Архитектура и стек
С самого начала я хотел, чтобы проект был лёгким, автономным и простым в установке. Поэтому выбрал:
- Backend: Java 17 + Spring Boot
- Frontend: Thymeleaf + Tailwind CSS
- База данных: PostgreSQL
- Уведомления: WebSocket (STOMP поверх SockJS)
- Telegram-интеграция: Java TelegramBots API
- Сборка и деплой: Maven + systemd unit на сервере
Приложение — монолитное, но структурировано по слоям:
- controller — обработчики HTTP-запросов, WebSocket и REST API;
- service — бизнес-логика (создание задач, уведомления, Telegram-интеграция);
- repository — работа с базой через Spring Data JPA;
- entity — модели данных.
Основные возможности
- Создание и редактирование задач и проектов;
- Статусы и логика переходов задач;
- Архивирование завершённых задач;
- Комментарии и обсуждения;
- Сортировка и фильтрация по дате, статусу, исполнителю;
- Статистика по пользователям и проектам;
- Уведомления о новых событиях в реальном времени;
- Telegram-бот для получения уведомлений.
- Интеграция с Active Directory
Как всё начиналось
Первая версия Делайки была всего одной страницей с таблицей задач и формой для создания новой.
Всё — без фреймворков, просто Spring Boot и Thymeleaf.
Когда стало понятно, что инструмент прижился, я начал добавлять функционал:
- фильтры и сортировки,
- роли пользователей (админ, модератор, исполнитель),
- архив завершённых задач,
- статистику.
Со временем появилось и уведомление в реальном времени. Для этого я добавил WebSocket-канал /user/queue/notifications, через который фронтенд получает сообщения о новых задачах, комментариях и изменениях статуса.
Трудности и заброшенный чат
После основного функционала я решил сделать раздел с сообщениями — хотел реализовать что-то вроде Rocket.Chat:
личные переписки, закрытые каналы и общие чаты.
Но столкнулся с неожиданной проблемой: конфликт уведомлений.
WebSocket, который обслуживал уведомления о задачах, начал пересекаться с уведомлениями о новых сообщениях.
В итоге один канал блокировал другой, а сообщения иногда просто терялись.
Несколько дней я пытался развести логику уведомлений по разным топикам, но столкнулся с трудностями синхронизации сессий пользователей и decided приостановить разработку этого раздела — иначе пострадала бы стабильность основного функционала.
Уведомления и Telegram-бот
Так родилась идея вынести часть уведомлений в Telegram.
Делайка — браузерная система, и у нас она развёрнута на IP, без домена и HTTPS.
Из-за этого нативные уведомления работают только при открытой вкладке.
Я реализовал Telegram-бота, который подключается к пользователю через deep link /start <код>:
- В профиле пользователя генерируется уникальный код и ссылка.
- Пользователь открывает её в Telegram и авторизуется.
- Бот сохраняет chat_id и связывает его с пользователем.
- После этого бот отправляет уведомления о новых задачах, комментариях, изменениях статуса и т.д.
Так пользователи всегда в курсе происходящего, даже без открытого браузера.
Демо
Сейчас Делайка доступна для тестирования: https://delajka.ru.
Попробуйте создать проект, задачи, назначить исполнителей — и дайте обратную связь.
Мне важно мнение разработчиков: удобен ли интерфейс, как реализовано уведомление, и стоит ли двигаться дальше (например, в сторону open-source или SaaS-версии).
Итог
Для меня Делайка стала не просто pet-проектом, а практическим примером того,
как из внутренней задачи компании можно вырастить полноценный продукт