diff --git a/awesome_dashboard/__init__.py b/awesome_dashboard/__init__.py
new file mode 100644
index 0000000..b0f26a9
--- /dev/null
+++ b/awesome_dashboard/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import controllers
diff --git a/awesome_dashboard/__manifest__.py b/awesome_dashboard/__manifest__.py
new file mode 100644
index 0000000..31406e8
--- /dev/null
+++ b/awesome_dashboard/__manifest__.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+{
+ 'name': "Awesome Dashboard",
+
+ 'summary': """
+ Starting module for "Discover the JS framework, chapter 2: Build a dashboard"
+ """,
+
+ 'description': """
+ Starting module for "Discover the JS framework, chapter 2: Build a dashboard"
+ """,
+
+ 'author': "Odoo",
+ 'website': "https://www.odoo.com/",
+ 'category': 'Tutorials/AwesomeDashboard',
+ 'version': '0.1',
+ 'application': True,
+ 'installable': True,
+ 'depends': ['base', 'web', 'mail', 'crm'],
+
+ 'data': [
+ 'views/views.xml',
+ ],
+ 'assets': {
+ 'web.assets_backend': [
+ 'awesome_dashboard/static/src/**/*',
+ ],
+ },
+ 'license': 'AGPL-3'
+}
diff --git a/awesome_dashboard/controllers/__init__.py b/awesome_dashboard/controllers/__init__.py
new file mode 100644
index 0000000..457bae2
--- /dev/null
+++ b/awesome_dashboard/controllers/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import controllers
\ No newline at end of file
diff --git a/awesome_dashboard/controllers/controllers.py b/awesome_dashboard/controllers/controllers.py
new file mode 100644
index 0000000..56d4a05
--- /dev/null
+++ b/awesome_dashboard/controllers/controllers.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+
+import logging
+import random
+
+from odoo import http
+from odoo.http import request
+
+logger = logging.getLogger(__name__)
+
+class AwesomeDashboard(http.Controller):
+ @http.route('/awesome_dashboard/statistics', type='json', auth='user')
+ def get_statistics(self):
+ """
+ Returns a dict of statistics about the orders:
+ 'average_quantity': the average number of t-shirts by order
+ 'average_time': the average time (in hours) elapsed between the
+ moment an order is created, and the moment is it sent
+ 'nb_cancelled_orders': the number of cancelled orders, this month
+ 'nb_new_orders': the number of new orders, this month
+ 'total_amount': the total amount of orders, this month
+ """
+
+ return {
+ 'average_quantity': random.randint(4, 12),
+ 'average_time': random.randint(4, 123),
+ 'nb_cancelled_orders': random.randint(0, 50),
+ 'nb_new_orders': random.randint(10, 200),
+ 'orders_by_size': {
+ 'm': random.randint(0, 150),
+ 's': random.randint(0, 150),
+ 'xl': random.randint(0, 150),
+ },
+ 'total_amount': random.randint(100, 1000)
+ }
+
diff --git a/awesome_dashboard/static/src/dashboard.js b/awesome_dashboard/static/src/dashboard.js
new file mode 100644
index 0000000..637fa4b
--- /dev/null
+++ b/awesome_dashboard/static/src/dashboard.js
@@ -0,0 +1,10 @@
+/** @odoo-module **/
+
+import { Component } from "@odoo/owl";
+import { registry } from "@web/core/registry";
+
+class AwesomeDashboard extends Component {
+ static template = "awesome_dashboard.AwesomeDashboard";
+}
+
+registry.category("actions").add("awesome_dashboard.dashboard", AwesomeDashboard);
diff --git a/awesome_dashboard/static/src/dashboard.xml b/awesome_dashboard/static/src/dashboard.xml
new file mode 100644
index 0000000..1a2ac9a
--- /dev/null
+++ b/awesome_dashboard/static/src/dashboard.xml
@@ -0,0 +1,8 @@
+
+
+
+
+ hello dashboard
+
+
+
diff --git a/awesome_dashboard/views/views.xml b/awesome_dashboard/views/views.xml
new file mode 100644
index 0000000..47fb2b6
--- /dev/null
+++ b/awesome_dashboard/views/views.xml
@@ -0,0 +1,11 @@
+
+
+
+ Dashboard
+ awesome_dashboard.dashboard
+
+
+
+
+
+