Open source сервис для создания интерактивных Канбан досок с Github и Bitbucket интеграцией

Вступление


Здравствуйте, сегодня я расскажу вам о моём сервисе kanbanonrails.com, позволяющем создавать Канбан доски и интегрировать их с Github и Bitbucket.

Что такое Kanban методология?


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

У нас есть набор карточек (так называемых issues’ов, то есть задач) и есть столбцы, по которым мы перемещаем наши карточки. Как правило при создании задачи мы помечаем её каким-нибудь тегом, например «backlog» или «ready_to_work», таким образом она сразу соотносится с одним из наших столбцов, в которые попадают задачи с тегами «backlog» или «ready_to_work» соответсвенно. Затем, по мере продвижения работы с этой задачей, мы перемещаем её в другие столбцы, например, «coding», «testing» и так далее. Идея в том, чтобы рационально использовать свою производительность и не допускать скопления карточек в одном из столбцов. Кроме того, всё это позволяет видеть кто над чем работает и понять насколько проект продвигается вперёд.

Какие есть текущие имплементации?


Конечно же сейчас существует множество сервисов, которые позволяют делать то, что я написал выше. Но у каждого из них есть свои недостатки (нюансы). Например за большинство из них нужно платить. Не у всех из них есть интеграция с Гитхабом или Битбакетом. Не все они удобны и обладают нормальным пользовательским интерфейсом. Кроме того, не все они позволяют делить «доски» на секции. Вот, например, довольно популярные сервисы waffle.io huboard.com trello.com, но у всех у них есть недостатки, описанные выше.

Возможности и функциональность моего сервиса


Поэтому я решил создать свой сервис, который будет довольно гибким и функциональным. Вы можете пригласить менеджеров и при этом им не нужно будет предоставлять доступ непосредственно к гитхаб/битбакет репозиторию. Они могут быть вообще там не зарегистрированы, например. При создании инвайта, вам нужно будет указать роль пользователя в проекте. Сейчас доступно три роли «owner», 'member', 'manager'. Пользователь с ролью «owner» может редактировать/удалять проект, «member» и «manager» — не могут. Кроме того, «owner» и «member» могут создавать тикеты. Доски можно разбивать на секции и колонки. Вы можете создать секцию с названием «All»(например) и включить туда все тикеты (нужно поставить соответсвующую галочку в чекбоксе). А можете создать секцию «Clients» с тегом «client» и туда будут попадать все тикеты, у которых есть тег «client». Далее можно создавать столбцы для секций. При создании столбцов учитывайте, что теги не должны перекрываться. То есть, например, вы можете создать столбец Design с тегом «design» и все тикеты, у которых есть среди тегов «design» попадут туда. Кроме того вы можете указывать высоту и ширину столбца. Сервис переведён на 71 язык, правда в основном автоматическим переводом, но вы всегда можете послать Pull Request если увидете ошибку или неточность в переводе. Далее я немного опишу процесс синхронизации с Гитхабом и Битбакетом, но при этом вы всегда можете использовать мой сервис и без подключения Гитхаба и Битбакета.

Синхронизация проектов


Для того, чтобы засинхронизировать свои проекты с Гитхаба или Битбакета, вы должны сначала подключить эти сервисы в своих настройках или можете просто зайти через них кликнув в меню по соответсвующей иконке. Далее вам нужно будет нажать на кнопки синхронизации в разделе с проектами. Не забудьте одобрить запрос к данным организации при авторизации через Гитхаб, иначе нельзя будет синхронизировать репозитории вашей организации.

Синхронизация тикетов


При синхронизации проектов заодно перенесутся и их задачи (issues). Стоит обратить внимание, что у некоторых проектов (репозиториев) могут быть не подключены Issues, так что вы не увидете там никаких тикетов, поэтому убедитесь, что раздел с Issues’ами у вас включен в Гитхабе или Битбакете.

Создание вебхуков


После того как проекты и задачи засинхронизируются, через апи сервис создаст хуки, которые будут отправляться на сервис при создании/обнолении задач.

Почему open source?


Во-первых, я всегда был сторонником open source проектов. Во-вторых, в приватных репозиториях может содержаться очень важная информация, поэтому я решил, что будет правильней сделать этот сервис с открытым исходным кодом, чтобы все параноики желающие могли задеплоить его на свой сервер и пользоваться им не боясь, что их код кто-то украдёт. Ну и в-третьих, я надеюсь, что сообщество тоже будет принимать участие в проекте или хотя бы ставить звёздочки :-)

Стек технологий


В этом сервисе я использую мой любимейший стек технологий: Ruby, Ruby on Rails, PostgreSQL, Slim, Sass, CoffeeScript, Sidekiq, Redis, Memcached и множество других. Для real-time взаимодействия с пользователем используюся вебсокеты, а именно фреймворк Action Cable. Я ещё хотел добавить Selenium, потому что я очень люблю приёмочные тесты на кукумбере, но решил ограничиться интеграционными тестами, потому что, как вы знаете, покрывать тестами код и рефакторить его можно до бесконечности, а мне уже очень хотелось запуститься.

Заключение


Проект я сделал примерно за 10 дней, работая преимущественно по ночам. Работы проделано немало, но много наработок я использовал из своих предыдущих проектов. Кроме того, я столкнулся с некоторыми неожиданностями (тут как никогда подходит слово «issues»): например гем, который я использовал для обращения к апи битбакета, выдавал ошибку при попытке создания вебхука. Пришлось сделать форк и кое-что в нём поправить (это скорее временное решение, так что я не стал делать Pull Request в репозиторий с гемом). Мой сервис находится в самом начале своего развития и многое предстоит сделать, так что если есть вопросы, пожелания или замечания, пишите в комментариях, я буду рад их прочитать и отвечу на них по мере возможности.

Сервис с открытым исходным кодом, поэтому вы можете задеплоить его на свой сервер и использовать для вашей компании, но если у вас нет своих серверов или вы не хотите заморачиваться с деплоем, вы можете зарегистрироваться тут kanbanonrails.com (можно зайти через Github или Bitbucket). Регистрация и создание проектов на сайте пока бесплатны, возможно в будущем возникнут тарифы, а может обойдёмся и без тарифов, например будем зарабатывать на рекламе. Во всяком случае вы всегда сможете склонировать код и задеплоить его на свой сервер, проект будет open source и я не планирую его закрывать/менять лицензию. Кстати, на этот проект и на некоторые другие мои проекты я ищу инвесторов, так что если вы заинтересованы в сотрудничестве пишите сюда partnership@technoelegance.com или сюда kopylov.german@gmail.com

Ну и конечно же ссылка на гитхаб репозиторий: github.com/technoeleganceteam/kanban_on_rails

© Habrahabr.ru