Search
Write a publication
Pull to refresh

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

Level of difficultyEasy
Reading time4 min
Views8.9K

Внутренние хакатоны — отличный способ протестировать новые идеи. Мы не только экспериментируем, но и получаем практический опыт. Однажды, работая над 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 результата.

Тестовые данные для демостенда:

Телефон: +79000000000
Пароль: condodemo1234

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

Чтобы нас никто не обвинил в плагиате 😄, мы кастомизировали 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 на гитхабе.

Tags:
Hubs:
Total votes 20: ↑19 and ↓1+27
Comments20

Articles