diff --git a/erpnext/projects/report/project_summary/__init__.py b/erpnext/projects/report/project_summary/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/projects/report/project_summary/__init__.py
diff --git a/erpnext/projects/report/project_summary/project_summary.js b/erpnext/projects/report/project_summary/project_summary.js
new file mode 100644
index 0000000..15367ac
--- /dev/null
+++ b/erpnext/projects/report/project_summary/project_summary.js
@@ -0,0 +1,23 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+/* eslint-disable */
+
+frappe.query_reports["Project Summary"] = {
+	"filters": [
+		{
+			"fieldname": "company",
+			"label": __("Company"),
+			"fieldtype": "Link",
+			"options": "Company",
+			"default": frappe.defaults.get_user_default("Company"),
+			"reqd": 1
+		},
+		{
+			"fieldname": "status",
+			"label": __("Status"),
+			"fieldtype": "Select",
+			"options": "Open\nComplete\nCancelled",
+			"default": "Open"
+		}
+	]
+};
diff --git a/erpnext/projects/report/project_summary/project_summary.json b/erpnext/projects/report/project_summary/project_summary.json
new file mode 100644
index 0000000..0b18b3e
--- /dev/null
+++ b/erpnext/projects/report/project_summary/project_summary.json
@@ -0,0 +1,27 @@
+{
+ "add_total_row": 0,
+ "creation": "2020-05-04 19:31:54.575765",
+ "disable_prepared_report": 0,
+ "disabled": 0,
+ "docstatus": 0,
+ "doctype": "Report",
+ "idx": 0,
+ "is_standard": "Yes",
+ "modified": "2020-05-04 19:32:53.177213",
+ "modified_by": "Administrator",
+ "module": "Projects",
+ "name": "Project Summary",
+ "owner": "Administrator",
+ "prepared_report": 0,
+ "ref_doctype": "Project",
+ "report_name": "Project Summary",
+ "report_type": "Script Report",
+ "roles": [
+  {
+   "role": "Projects User"
+  },
+  {
+   "role": "Projects Manager"
+  }
+ ]
+}
\ No newline at end of file
diff --git a/erpnext/projects/report/project_summary/project_summary.py b/erpnext/projects/report/project_summary/project_summary.py
new file mode 100644
index 0000000..c11c4ca
--- /dev/null
+++ b/erpnext/projects/report/project_summary/project_summary.py
@@ -0,0 +1,142 @@
+# Copyright (c) 2013, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe import _
+
+def execute(filters=None):
+	columns = get_columns()
+	data = []
+
+	data = frappe.db.get_all("Project", filters=filters, fields=["name", 'status', "percent_complete", "expected_start_date", "expected_end_date"], order_by="expected_end_date")
+
+	for project in data:
+		project["total_tasks"] = frappe.db.count("Task", filters={"project": project.name})
+		project["completed_tasks"] = frappe.db.count("Task", filters={"project": project.name, "status": "Completed"})
+		project["overdue_tasks"] = frappe.db.count("Task", filters={"project": project.name, "status": "Overdue"})
+
+	chart = get_chart_data(data)
+	report_summary = get_report_summary(data)
+
+	return columns, data, None, chart, report_summary
+
+def get_columns():
+	return [
+		{
+			"fieldname": "name",
+			"label": _("Project"),
+			"fieldtype": "Link",
+			"options": "Project",
+			"width": 200
+		},
+		{
+			"fieldname": "status",
+			"label": _("Status"),
+			"fieldtype": "Data",
+			"width": 120
+		},
+		{
+			"fieldname": "total_tasks",
+			"label": _("Total Tasks"),
+			"fieldtype": "Data",
+			"width": 120
+		},
+		{
+			"fieldname": "completed_tasks",
+			"label": _("Tasks Completed"),
+			"fieldtype": "Data",
+			"width": 120
+		},
+		{
+			"fieldname": "overdue_tasks",
+			"label": _("Tasks Overdue"),
+			"fieldtype": "Data",
+			"width": 120
+		},
+		{
+			"fieldname": "percent_complete",
+			"label": _("Completion"),
+			"fieldtype": "Data",
+			"width": 120
+		},
+		{
+			"fieldname": "expected_start_date",
+			"label": _("Start Date"),
+			"fieldtype": "Date",
+			"width": 120
+		},
+		{
+			"fieldname": "expected_end_date",
+			"label": _("End Date"),
+			"fieldtype": "Date",
+			"width": 120
+		},
+	]
+
+def get_chart_data(data):
+	labels = []
+	total = []
+	completed = []
+	overdue = []
+
+	for project in data:
+		labels.append(project.name)
+		total.append(project.total_tasks)
+		completed.append(project.completed_tasks)
+		overdue.append(project.overdue_tasks)
+
+	return {
+		"data": {
+			'labels': labels,
+			'datasets': [
+				{
+					"name": "Total Tasks",
+					"values": total
+				},
+				{
+					"name": "Tasks Completed",
+					"values": completed
+				},
+				{
+					"name": "Tasks Overdue",
+					"values": overdue
+				}
+			]
+		},
+		"type": "bar",
+		"colors": ["#7679fc", "#98d85b", "#fc4f51"]
+	}
+
+def get_report_summary(data):
+	avg_completion = sum([project.percent_complete for project in data]) / len(data)
+	total = sum([project.total_tasks for project in data])
+	total_overdue = sum([project.overdue_tasks for project in data])
+	completed = sum([project.completed_tasks for project in data])
+
+	return [
+		{
+			"value": avg_completion,
+			"indicator": "Green" if avg_completion > 50 else "Red",
+			"label": "Average Completion",
+			"datatype": "Percent",
+		},
+		{
+			"value": total,
+			"indicator": "Blue",
+			"label": "Total Tasks",
+			"datatype": "Int",
+		},
+		{
+			"value": completed,
+			"indicator": "Green",
+			"label": "Completed Tasks",
+			"datatype": "Int",
+		},
+		{
+			"value": total_overdue,
+			"indicator": "Green" if total_overdue == 0 else "Red",
+			"label": "Overdue Tasks",
+			"datatype": "Int",
+		}
+	]
