⬆️ ⬇️

Open source service for creating interactive Kanban boards with Github, Bitbucket and Gitlab integration

Introduction



Hello, today I will tell you about my kanbanonrails.com service, which allows you to create Kanban boards and integrate them with Github and Bitbucket.



What is the Kanban methodology?



I will not go into details, since the methodology has already been described on Habré and more than once, I can only say that in essence it is a kind of tool that allows you to effectively manage the project. In this article I will talk about kanban card and its implementation in software.



We have a set of cards (so-called issues, that is, tasks) and there are columns on which we move our cards. As a rule, when creating a task, we mark it with some tag, for example, “backlog” or “ready_to_work”, so it immediately corresponds to one of our columns that contain tasks with tags “backlog” or “ready_to_work”, respectively. Then, as work progresses with this task, we move it to other columns, for example, “coding”, “testing”, and so on. The idea is to make rational use of its performance and to prevent the accumulation of cards in one of the columns. In addition, all this allows you to see who is working on what and to understand how the project is moving forward.



What are the current implementations?



Of course, now there are many services that allow you to do what I wrote above. But each of them has its drawbacks (nuances). For example, most of them need to pay. Not all of them have integration with Github or BitBack. Not all of them are comfortable and have a normal user interface. In addition, not all of them allow dividing the “boards” into sections. Here, for example, rather popular services waffle.io huboard.com trello.com but they all have the disadvantages described above.

')

Features and functionality of my service



Therefore, I decided to create my own service, which will be quite flexible and functional. You can invite managers without having to provide access directly to the githab / bitback repository. They may not even be registered there, for example. When creating invites, you will need to specify the user role in the project. Three roles are now available: "owner", 'member', 'manager'. The user with the role of "owner" can edit / delete the project, "member" and "manager" - can not. In addition, "owner" and "member" can create tickets. Boards can be divided into sections and columns. You can create a section with the name “All” (for example) and include all the tickets there (you need to check the corresponding box in the checkbox). And you can create a section "Clients" with the tag "client" and all tickets that have the tag "client" will get there. Further it is possible to create columns for sections. When creating columns, keep in mind that tags should not overlap. That is, for example, you can create a Design column with a “design” tag and all tickets that have among the “design” tags will go there. In addition, you can specify the height and width of the column. The service is translated into 71 languages, though mostly by automatic translation, but you can always send a Pull Request if you see an error or inaccuracy in the translation. Next, I will describe a little the synchronization process with GitHub and BitBacket, but you can always use my service without connecting GitHub and BitBacket.



Project Sync



In order to synchronize your projects from GitHub or BitBacket, you must first connect these services in your settings, or you can simply go through them by clicking on the appropriate icon in the menu. Next you will need to click on the synchronization buttons in the section with projects. Do not forget to approve the request to the organization’s data when authorizing via Github, otherwise it will not be possible to synchronize the repositories of your organization.



Sync tickets



When synchronizing projects, their tasks (issues) will be transferred at the same time. It should be noted that some projects (repositories) may not have Issues connected, so you will not see any tickets there, so make sure that the Issues section is enabled in GitHub or BitBack.



Creating webhukov



After projects and tasks are synchronized, the api service will create hooks that will be sent to the service when creating / updating tasks.



Why open source?



First, I have always been a supporter of open source projects. Secondly, very important information may be contained in private repositories, so I decided that it would be more correct to make this service open source so that all paranoid Those who wished could have deposited it on their server and used it without fear that someone would steal their code. And thirdly, I hope that the community will also take part in the project, or at least put stars :-)



Technology stack



In this service I use my favorite technology stack: Ruby, Ruby on Rails, PostgreSQL, Slim, Sass, CoffeeScript, Sidekiq, Redis, Memcached and many others. For real-time user interaction, web sockets are used, namely Action Cable framework. I also wanted to add Selenium, because I really like acceptance tests on a cookie-maker, but I decided to limit myself to integration tests, because, as you know, you can cover the code with tests and you can refactor it to infinity, but I really wanted to start.



Conclusion



I did the project in about 10 days, working mostly at night. A lot of work has been done, but I used a lot of work from my previous projects. In addition, I encountered some surprises (the word “issues” is more appropriate here): for example, the gem that I used to refer to the bitbaket api gave an error when trying to create a webhost. I had to make a fork and fix something in it (this is rather a temporary solution, so I did not do the Pull Request to the repository with the heme). My service is at the very beginning of its development and much remains to be done, so if you have questions, wishes or comments, write in the comments, I will be glad to read them and answer them as far as possible.



The service is open source, so you can deposit it on your server and use it for your company, but if you do not have your own servers or you don’t want to bother with the deployment, you can register here kanbanonrails.com (you can log in via Github or Bitbucket) . Registration and creation of projects on the site is still free, perhaps in the future there will be tariffs, and maybe we will manage without tariffs, for example, we will earn on advertising. In any case, you can always clone the code and upload it to your server, the project will be open source and I do not plan to close / change the license. By the way, I am looking for investors for this project and for some of my other projects, so if you are interested in cooperation, write here partnership@technoelegance.com or here kopylov.german@gmail.com



And of course, the link to the githab repository: github.com/technoeleganceteam/kanban_on_rails



UPD (07/10/2016): Made the integration with Gitlab and wrote about it in README.md . In short: with the main Gitlab server (https://gitlab.com) I did the default integration and decided that if the user uses his own server for Gitlab, then he will most likely be able to add KanbanOnRails to his server too , but for this it will need to register several parameters in Settings, which I wrote about in README.md.

Source: https://habr.com/ru/post/302890/



All Articles