
Внутренние хакатоны — отличный способ протестировать новые идеи. Мы не только экспериментируем, но и получаем практический опыт. Однажды, работая над CRM для управляющей компании (УК) в Дубае, мы задумались:
Мы сделали систему для работы с заявками для УК. А почему бы не создать свою Jira для работы с задачами? Почему еще никто не напилил полноценную Open Source Jira для бедных?
Сначала это звучало как шутка. Но мысль возвращалась снова и снова — особенно когда Jira начинала тормозить или раздражать.
Мы решили собрать велосипед 🚲 из готовых Open Source решений.
В качестве backend взяли Condo — у него MIT‑лицензия, встроенные регистрация, авторизация, работа с файлами, таблицами, списками задач и поддержка нескольких организаций.

К нему прикрутили фронтенд из Jira Clone. Он тоже под MIT‑лицензией, уже реализует Kanban‑доску и содержит визуальные компоненты, похожие на интерфейс Jira. Но в нем нет регистрации, авторизации, управления сотрудниками и работы с файлами.

В итоге собрали свой ламповый Open Source Jira Clone SaaS под свободной MIT‑лицензией.

Дальше, мы подробнее рассмотрим наш путь и что мы взяли из этих проектов. Если не терпится, то можно посмотреть DEMO результата.
Как мы собирали
Чтобы нас никто не обвинил в плагиате 😄, мы кастомизировали UI под нашу цветовую палитру. Общий лэйаут взяли из Condo — там есть переключение между проектами и базовые страницы пользователя с минимальными настройками.
Проект Condo заточен под работу с заявками для УК, но в нашем случае нужна другая терминология. В Jira работают с задачами, поэтому мы поправили строки переводов в Condo. Дальше по тексту будем использовать именно этот термин.
В Condo создание задач требует заполнения большой формы с адресом, классификатором и другой ненужной нам информацией. Все это мы вырезали из интерфейса и взяли форму создания задачи из Jira Clone.

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

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

Создание задачи реализовали через модальное окно. Взяли форму из Condo, стилизовали и убрали лишние поля. Теперь для создания новой задачи достаточно указать ее тип и заголовок.

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

Это позволило работать с задачами в интерфейсе, похожем на Excel, с фильтрацией и сортировкой по колонкам.
Главной задачей было интегрировать Kanban‑доску из Jira Clone.

Кроме доски, мы решили добавить возможность разделения задач по организациям, как это реализовано в Jira с проектами.

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

Мы взяли страницу аналитики из Condo и адаптировали ее под задачи. Там можно посмотреть аналитику по статусам и исполнителям за выбранный период.

Какой набор фичей получился?
✅ Работа с задачами: создание, поиск, фильтрация и сортировка
✅ Kanban‑доска: стандартное перетаскивание задач между статусами
✅ Комментарии и файлы: возможность обсуждать и прикреплять документы
✅ Аналитика: статистика по задачам, статусам и исполнителям
✅ Сотрудники: аутентификация, регистрация, инвайты и управление списками
Поля задачи: Тип, Описание, Заголовок, Статус, Приоритет, Исполнитель и ответственный, Дедлайн.
Какие есть альтернативы?
Plane
Ссылка на репозиторий — https://github.com/makeplane/plane

❌ Понятный технологический стек — Python, Typescript
❌ Лицензия — AGPL-3.0
Peppermint
Ссылка на репозиторий — https://github.com/Peppermint-Lab/peppermint

✅ Понятный технологический стек — Typescript
❌ Лицензия — AGPL-3.0
Tegon
Ссылка на репозиторий — https://github.com/tegonhq/tegon

✅ Понятный технологический стек — Typescript
❌ Лицензия — AGPL-3.0
Как развернуть самому?
Чтобы развернуть получившийся результат локально, вам нужно выполнить следующий набор действий в терминале Git Bash:
-
Клонируем репозиторий
-
Устанавливаем зависимости
— yarn install
— npm i -g turbo@^2
— pip install Django psycopg2-binary -
Запускаем контейнеры — docker compose up ‑d postgresdb redis
-
Билдим зависимости — yarn workspace @app/condo build:deps
-
Подготавливаем приложение к запуску — node bin/prepare ‑f condo
-
Билдим backend — yarn workspace @app/condo build и frontend — yarn workspace @app/condo build:frontend
-
Запускаем backend — yarn workspace @app/condo start и frontend — yarn workspace @app/condo start:frontend
После этого проект автоматически запустится, и вы сможете увидеть его по адресу http://localhost:3000. Важно отметить, что поскольку bash‑скрипт выполняется в вашем окружении, необходимо понизить версию Node.js до 16.20.0 (это поддерживаемая версия), например, с помощью nvm.
Итог
Код проекта доступен на Github под лицензией MIT. Будет круто, если вы поставите нам ⭐️. Если у вас у вас появилось желание что‑то доработать, то можете написать в нам в ТГ или оставить issues на гитхабе.
ссылка на оригинал статьи https://habr.com/ru/articles/891366/
Добавить комментарий