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 me 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 will only say that in fact it is a tool that allows you to effectively manage the project. In this article I will talk about card Kanban and its implementation in a program form.
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 correlates with one of our columns, which get tasks with the tags “backlog” or “ready_to_work”, respectively. Then, as we move forward with this task, we move it to other columns, for example, “coding”, “testing”, and so on. The idea is to rationally use your performance and prevent the accumulation of cards in one of the columns. In addition, all this allows you to see who is working on what and 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 own drawbacks (nuances). For example, most of them need to be paid. Not all of them have integration with Github or Bitbucket. Not all of them are convenient and have a normal user interface. In addition, not all of them allow dividing “boards” into sections. Here, for example, are quite 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 and they will not need to provide access directly to the github / bitbucket repository. They may not be registered there at all, for example. When creating an invite, you will need to specify the role of the user in the project. Three roles are currently available: owner, member, manager. A user with the role “owner” can edit / delete a project, “member” and “manager” cannot. 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 tickets there (you need to check the corresponding box in the checkbox). Or you can create a section “Clients” with a tag “client” and all tickets that have a tag “client” will get there. Next, you can 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 the “design” tag and all tickets that have among the “design” tags will get there. In addition, you can specify the height and width of the column. The service is translated into 71 languages, though mostly 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 Bitbucket, but at the same time, you can always use my service without connecting Github and Bitbucket. which have among the design tags get there. In addition, you can specify the height and width of the column. The service is translated into 71 languages, though mostly 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 Bitbucket, but at the same time, you can always use my service without connecting Github and Bitbucket. which have among the design tags get there. In addition, you can specify the height and width of the column. The service is translated into 71 languages, though mostly 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 Bitbucket, but at the same time, you can always use my service without connecting Github and Bitbucket.
Project Sync
In order to synchronize your projects from Github or Bitbucket, you must first connect these services in your settings or you can simply go through them by clicking on the corresponding icon in the menu. Next, you will need to click on the sync buttons in the projects section. Do not forget to approve the request to the organization’s data during authorization through Github, otherwise it will be impossible to synchronize the repositories of your organization.
Ticket Sync
When synchronizing projects, their tasks (issues) will be transferred at the same time. It is worth noting that some projects (repositories) may not have Issues connected, so you won’t see any tickets there, so make sure that the section with Issues is turned on in your github or bitpacket.
Webhook Creation
After the projects and tasks are synchronized, through the api service will create hooks that will be sent to the service when creating / updating tasks.
Why open source?
Firstly, I have always been a supporter of open source projects. Secondly, private repositories can contain very important information, so I decided that it would be better to make this service open source so that everything
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, we use web sockets, namely the Action Cable framework. I also wanted to add Selenium, because I really like acceptance tests on the cuckumber, but decided to limit myself to integration tests, because, as you know, you can cover the code with tests and refactor it ad infinitum, and I really wanted to start.
Conclusion
I completed the project in about 10 days, working mainly at night. A lot of work has been done, but I have used a lot of groundwork from my previous projects. In addition, I came across some surprises (the word “issues” is more suitable here): for example, the gem that I used to access the bitpack api generated an error when trying to create a web hook. I had to fork and fix something in it (this is rather a temporary solution, so I did not make a Pull Request to the gem repository). My service is at the very beginning of its development and much remains to be done, so if you have questions, suggestions or comments, write in the comments, I will be glad to read them and will answer them as far as possible.
The service is open source, so you can deploy it to your server and use it for your company, but if you do not have your own servers or do not want to bother with the deployment, you can register here kanbanonrails.com (you can go through Github or Bitbucket) . Registration and creation of projects on the site is still free, perhaps in the future there will be tariffs, or we can do without tariffs, for example, we will earn on advertising. In any case, you can always clone the code and deploy 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 [email protected] or here [email protected]
And of course the link to the github repository: github.com/technoeleganceteam/kanban_on_rails
UPD (07/10/2016): I made 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 deploy KanbanOnRails to his server too and use it , but for this he will need to register several parameters in Settings, which I wrote about in README.md.