[WIP]: Kanban view for Frappe

Now there is a image view how much would it cost for the frappe team to do a kanban view. I have seen one on github but i feel that this needs to be built into frappe.


It was contributed by @makarand_b, you can ask him :slight_smile:

@makarand_b what would you charge for this?


It was developed by team mate @makarand_b for one of our customer. For Kanban view, let me take effort estimates from team.

@gupteshwar Please update us on efforts required for Kanban view.

Kanhaiya Kale
Skype: kanhaiya.kale

Would love this to become a reality, it’s the only thing stopping us choosing erpnext over odoo

@woakes070048/@Mediafront , we would like to understand “Kanban view” expectations in detail.
That will help us define this work properly.

Kanban is a very popular method of visualising the progress of a task or project. You can have a number of different columns/stages (e.g. Backlog, To Do, Doing, Done) and you drag and drop a task or project between those columns.

A better explanation can be found here: https://leankit.com/learn/kanban/kanban-board/

Popular Kanban tools include Trello and Wekan - Wekan is open source.

Ideally we would be able to have a “Kanban View” for all projects which allows us to drag and drop them between columns, which would change the stage they are at.

1 Like

@gupteshwar i agree with @Mediafront that covers the use case. Maybe we should start a bounty on it

Thanks @woakes070048 and @Mediafront. I will go through the details and post you updates.

I have been working on a modularized Kanban framework for use with Frappe - could provide a great head-start.

It relies on the users creating a page and making an entry in the Board doctype, selecting statuses for each column, etc, to be able to span across multiple doctypes.

The front-end is built in React. The architecture of React + Redux makes a lot of sense for this sort of data flow. It also allows live filtering, eventually live updates could publish to the board through a websocket. Our team has been using it almost exclusively for CRM (see PipeDrive CRM).

The app (“Kanban”) includes the bundle, source, and doctypes to make the board function.

At this point, it’s just an additional view layer and needs a bit of work to get drag/drop, modular color-coding of cards based on certain fields, query optimization, etc. Plenty of places for this to go.

Screenshot is too large a file to upload here…


Repository Link



@alec_ruizramon1 that looks awesome. I wonder if that is something that we might be able to add to frappe directly

It’s definitely doable…the benefit to having it as it’s own page rather than a separate ‘view’ for a doctype is the ability for it to span across multiple documents in the Document Flow.

That being said, I don’t understand enough about how Frappe goes about rendering different views and so on - something I need to learn.

The big to-dos are speeding up the loading of documents (Know how to do this, just don’t have time), modularizing color-coding of cards (currently hardcoded based on ‘next contact date’ and the most recent communication), and adding drag-drop functionality (tricky because we must ensure that the user does not accidentally/trivially move a card into a new column, or a new doctype).

I tried to install it but i get this error when try to open it

Traceback (most recent call last):
File “/home/frappe/frappe-bench/apps/frappe/frappe/app.py”, line 55, in application
response = frappe.handler.handle()
File “/home/frappe/frappe-bench/apps/frappe/frappe/handler.py”, line 19, in handle
File “/home/frappe/frappe-bench/apps/frappe/frappe/handler.py”, line 36, in execute_cmd
ret = frappe.call(method, **frappe.form_dict)
File “/home/frappe/frappe-bench/apps/frappe/frappe/init.py”, line 879, in call
return fn(*args, **newargs)
TypeError: get() takes exactly 1 argument (0 given)

Also now i get error when i do bench update

This looks fantastic!

I can’t replicate this, what version of Frappe are you using?

EDIT: there was an issue with hooks, so try to update, but it seems to be unrelated.

Now I can install it, however when I run

bench update

I get the following error

–error in /home/frappe/frappe-bench/apps/kanban/kanban/public/prius/dist/bundle.js–

however, now the app shows and when i try to create a board setup the columns and the fields then i click test, I get the following error

Traceback (most recent call last):
File “/home/frappe/frappe-bench/apps/frappe/frappe/app.py”, line 55, in application
response = frappe.handler.handle()
File “/home/frappe/frappe-bench/apps/frappe/frappe/handler.py”, line 19, in handle
File “/home/frappe/frappe-bench/apps/frappe/frappe/handler.py”, line 36, in execute_cmd
ret = frappe.call(method, **frappe.form_dict)
File “/home/frappe/frappe-bench/apps/frappe/frappe/init.py”, line 879, in call
return fn(*args, **newargs)
TypeError: runserverobj() takes at least 1 argument (1 given)

Makes sense - I removed the method for “test” on the server. Will remove the button as it doesn’t serve any purpose!

Thanks for using/testing and giving feedback! :smiley:


that sounds pretty interesting. I was looking forward to some sort of kanban from project management perspective mainly …

now, not sure whether I understand this 100% correctly … is it that you can add any ERPNExt document (Sales Invoice, a task, a Purchase ORder …) to any board and move such items through it (for example through some sort of due > work in progress > done stages?

@woakes070048 would it really make any difference whether this is a separate module or part of the base code?

I think the best way for such would be to do that based on an issue in the github project (which might be the one of @alec_ruizramon1). Like this you can use that issue to disuss the details and have it serving as centralized location to gather requirements, discusssion, etc

just out of interest … why did you use MIT license in contrast to ERPNext/frappe being GPL3?

@vrms I believe it would. When you consider how odoo odes the same thing all modules have a table and a kanban view. think the the image view for items. It would easy for use and right out of the box for the framework