Add Kanban Board button in project (#13345)

diff --git a/erpnext/projects/doctype/project/project.js b/erpnext/projects/doctype/project/project.js
index 682398f..7fbeaee 100644
--- a/erpnext/projects/doctype/project/project.js
+++ b/erpnext/projects/doctype/project/project.js
@@ -49,6 +49,23 @@
 				filters: filters
 			}
 		});
+
+		if (frappe.model.can_read("Task")) {
+			frm.add_custom_button(__("Gantt Chart"), function () {
+				frappe.route_options = {
+					"project": frm.doc.name
+				};
+				frappe.set_route("List", "Task", "Gantt");
+			});
+
+			frm.add_custom_button(__("Kanban Board"), () => {
+				frappe.call('erpnext.projects.doctype.project.project.create_kanban_board_if_not_exists', {
+					project: frm.doc.project_name
+				}).then(() => {
+					frappe.set_route('List', 'Task', 'Kanban', frm.doc.project_name);
+				});
+			});
+		}
 	},
 
 	refresh: function (frm) {
@@ -57,15 +74,6 @@
 		} else {
 			frm.add_web_link("/projects?project=" + encodeURIComponent(frm.doc.name));
 
-			if (frappe.model.can_read("Task")) {
-				frm.add_custom_button(__("Gantt Chart"), function () {
-					frappe.route_options = {
-						"project": frm.doc.name
-					};
-					frappe.set_route("List", "Task", "Gantt");
-				});
-			}
-
 			frm.trigger('show_dashboard');
 		}
 	},
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 02a4afb..abb497c 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -406,4 +406,13 @@
 				header=[frappe._("Please Update your Project Status"), 'blue'],
 				message= project_update_url
 			)
-	return data
\ No newline at end of file
+	return data
+
+@frappe.whitelist()
+def create_kanban_board_if_not_exists(project):
+	from frappe.desk.doctype.kanban_board.kanban_board import quick_kanban_board
+
+	if not frappe.db.exists('Kanban Board', project):
+		quick_kanban_board('Task', project, 'status')
+
+	return True
\ No newline at end of file