Импортозамещение для бедных — что нам стоит свою open source Jira построить

от автора

Внутренние хакатоны — отличный способ протестировать новые идеи. Мы не только экспериментируем, но и получаем практический опыт. Однажды, работая над CRM для управляющей компании (УК) в Дубае, мы задумались:

Мы сделали систему для работы с заявками для УК. А почему бы не создать свою Jira для работы с задачами? Почему еще никто не напилил полноценную Open Source Jira для бедных?

Сначала это звучало как шутка. Но мысль возвращалась снова и снова — особенно когда Jira начинала тормозить или раздражать.

Мы решили собрать велосипед 🚲 из готовых Open Source решений.

В качестве backend взяли Condo — у него MIT‑лицензия, встроенные регистрация, авторизация, работа с файлами, таблицами, списками задач и поддержка нескольких организаций.

Интерфейс со списком заявок из Condo

Интерфейс со списком заявок из Condo

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

Канбан-доска из Jira Clone

Канбан-доска из Jira Clone

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

Канбан-доска результата

Канбан-доска результата

Дальше, мы подробнее рассмотрим наш путь и что мы взяли из этих проектов. Если не терпится, то можно посмотреть DEMO результата.

Как мы собирали

Чтобы нас никто не обвинил в плагиате 😄, мы кастомизировали UI под нашу цветовую палитру. Общий лэйаут взяли из Condo — там есть переключение между проектами и базовые страницы пользователя с минимальными настройками.

Проект Condo заточен под работу с заявками для УК, но в нашем случае нужна другая терминология. В Jira работают с задачами, поэтому мы поправили строки переводов в Condo. Дальше по тексту будем использовать именно этот термин.

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

Форма создания задачи из Jira Clone

Форма создания задачи из Jira Clone

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

Страница с деталями заявки из Condo

Страница с деталями заявки из Condo

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

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

Страница с деталями задачи

Страница с деталями задачи

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

Форма создания задачи

Форма создания задачи

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

Список задач

Список задач

Это позволило работать с задачами в интерфейсе, похожем на Excel, с фильтрацией и сортировкой по колонкам.

Главной задачей было интегрировать Kanban‑доску из Jira Clone.

Канбан-доска результата

Канбан-доска результата

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

Создание новой организации

Создание новой организации

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

Список сотрудников

Список сотрудников

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

 Страница с аналитикой по задачам

Страница с аналитикой по задачам

Какой набор фичей получился?

 ✅ Работа с задачами: создание, поиск, фильтрация и сортировка
Kanban‑доска: стандартное перетаскивание задач между статусами
Комментарии и файлы: возможность обсуждать и прикреплять документы
Аналитика: статистика по задачам, статусам и исполнителям
Сотрудники: аутентификация, регистрация, инвайты и управление списками

Поля задачи: Тип, Описание, Заголовок, Статус, Приоритет, Исполнитель и ответственный, Дедлайн.

Какие есть альтернативы?

Plane

Ссылка на репозиторий — https://github.com/makeplane/plane 

Интерфейс Plane

Интерфейс Plane

Понятный технологический стек — Python, Typescript
Лицензия — AGPL-3.0

Peppermint

Ссылка на репозиторий — https://github.com/Peppermint-Lab/peppermint 

Интерфейс Peppermint

Интерфейс Peppermint

Понятный технологический стек — Typescript
Лицензия — AGPL-3.0

Tegon

Ссылка на репозиторий — https://github.com/tegonhq/tegon 

Интерфейс Tegon

Интерфейс Tegon

Понятный технологический стек — Typescript
Лицензия — AGPL-3.0

Как развернуть самому?

Чтобы развернуть получившийся результат локально, вам нужно выполнить следующий набор действий в терминале Git Bash:

  1. Клонируем репозиторий

  2. Устанавливаем зависимости
    yarn install
    — npm i -g turbo@^2 
    — pip install Django psycopg2-binary

  3. Запускаем контейнеры — docker compose up ‑d postgresdb redis

  4. Билдим зависимости — yarn workspace @app/condo build:deps

  5. Подготавливаем приложение к запуску — node bin/prepare ‑f condo

  6. Билдим backend — yarn workspace @app/condo build и frontend yarn workspace @app/condo build:frontend

  7. Запускаем 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/