[css] portal
diff --git a/erpnext/config/website.py b/erpnext/config/website.py
index 5f77d9f..237c49c 100644
--- a/erpnext/config/website.py
+++ b/erpnext/config/website.py
@@ -7,6 +7,11 @@
 			"items": [
 				{
 					"type": "doctype",
+					"name": "Homepage",
+					"description": _("Settings for website homepage"),
+				},
+				{
+					"type": "doctype",
 					"name": "Shopping Cart Settings",
 					"label": _("Shopping Cart Settings"),
 					"description": _("Settings for online shopping cart such as shipping rules, price list etc."),
diff --git a/erpnext/controllers/website_list_for_contact.py b/erpnext/controllers/website_list_for_contact.py
index a1982ef..6b514b2 100644
--- a/erpnext/controllers/website_list_for_contact.py
+++ b/erpnext/controllers/website_list_for_contact.py
@@ -49,7 +49,7 @@
 				order_by = "modified desc"))
 		else:
 			return []
-			
+
 	return post_process(doctype, get_list(doctype, txt, filters, limit_start, limit_page_length,
 		fields="name", order_by = "modified desc"))
 
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index d37c4be..85fee1f 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -139,7 +139,11 @@
 		'Supplier Quotation', 'Purchase Order', 'Purchase Receipt',
 		'Purchase Invoice', 'Project', 'Issue'): {
 			'on_change': 'erpnext.accounts.party_status.notify_status'
-		}
+		},
+
+	"Website Settings": {
+		"validate": "erpnext.portal.doctype.products_settings.products_settings.home_page_is_products"
+	}
 }
 
 scheduler_events = {
diff --git a/erpnext/modules.txt b/erpnext/modules.txt
index dfca2f2..8a49547 100644
--- a/erpnext/modules.txt
+++ b/erpnext/modules.txt
@@ -11,3 +11,4 @@
 Utilities
 Shopping Cart
 Hub Node
+Portal
\ No newline at end of file
diff --git a/erpnext/portal/__init__.py b/erpnext/portal/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/portal/__init__.py
diff --git a/erpnext/portal/doctype/__init__.py b/erpnext/portal/doctype/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/portal/doctype/__init__.py
diff --git a/erpnext/portal/doctype/homepage/__init__.py b/erpnext/portal/doctype/homepage/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/portal/doctype/homepage/__init__.py
diff --git a/erpnext/portal/doctype/homepage/homepage.js b/erpnext/portal/doctype/homepage/homepage.js
new file mode 100644
index 0000000..df7f5ce
--- /dev/null
+++ b/erpnext/portal/doctype/homepage/homepage.js
@@ -0,0 +1,39 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Homepage', {
+	refresh: function(frm) {
+
+	},
+});
+
+frappe.ui.form.on('Homepage Featured Product', {
+	item_code: function(frm, cdt, cdn) {
+		var featured_product = frappe.model.get_doc(cdt, cdn);
+		if (featured_product.item_code) {
+			frappe.call({
+				method: 'frappe.client.get_value',
+				args: {
+					'doctype': 'Item',
+					'filters': featured_product.item_code,
+					'fieldname': [
+						'item_name',
+						'web_long_description',
+						'description',
+						'image',
+						'thumbnail'
+					]
+				},
+				callback: function(r) {
+					if (!r.exc) {
+						$.extend(featured_product, r.message);
+						if (r.message.web_long_description) {
+							featured_product.description = r.message.web_long_description;
+						}
+						frm.refresh_field('products');
+					}
+				}
+			});
+		}
+	}
+});
diff --git a/erpnext/portal/doctype/homepage/homepage.json b/erpnext/portal/doctype/homepage/homepage.json
new file mode 100644
index 0000000..7078ef9
--- /dev/null
+++ b/erpnext/portal/doctype/homepage/homepage.json
@@ -0,0 +1,208 @@
+{
+ "allow_copy": 0, 
+ "allow_import": 0, 
+ "allow_rename": 0, 
+ "autoname": "", 
+ "creation": "2016-04-22 05:27:52.109319", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "Setup", 
+ "fields": [
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "company", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Company", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Company", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "description": "Company Tagline for website homepage", 
+   "fieldname": "tag_line", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Tag Line", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "description": "Company Description for website homepage", 
+   "fieldname": "description", 
+   "fieldtype": "Text", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Description", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "products_section", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Products", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "description": "Products to be shown on website homepage", 
+   "fieldname": "products", 
+   "fieldtype": "Table", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Products", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Homepage Featured Product", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0, 
+   "width": "40px"
+  }
+ ], 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
+ "idx": 0, 
+ "in_create": 0, 
+ "in_dialog": 0, 
+ "is_submittable": 0, 
+ "issingle": 1, 
+ "istable": 0, 
+ "max_attachments": 0, 
+ "modified": "2016-04-22 05:57:38.701653", 
+ "modified_by": "Administrator", 
+ "module": "Portal", 
+ "name": "Homepage", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 0, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 0, 
+   "role": "System Manager", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }, 
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 0, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 0, 
+   "role": "Administrator", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }
+ ], 
+ "quick_entry": 0, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "title_field": "company", 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/portal/doctype/homepage/homepage.py b/erpnext/portal/doctype/homepage/homepage.py
new file mode 100644
index 0000000..6f55a59
--- /dev/null
+++ b/erpnext/portal/doctype/homepage/homepage.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class Homepage(Document):
+	pass
diff --git a/erpnext/portal/doctype/homepage_featured_product/__init__.py b/erpnext/portal/doctype/homepage_featured_product/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/portal/doctype/homepage_featured_product/__init__.py
diff --git a/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.json b/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.json
new file mode 100644
index 0000000..fe93098
--- /dev/null
+++ b/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.json
@@ -0,0 +1,273 @@
+{
+ "allow_copy": 0, 
+ "allow_import": 0, 
+ "allow_rename": 0, 
+ "autoname": "hash", 
+ "creation": "2016-04-22 05:57:06.261401", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "Document", 
+ "fields": [
+  {
+   "allow_on_submit": 0, 
+   "bold": 1, 
+   "collapsible": 0, 
+   "fieldname": "item_code", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 1, 
+   "in_list_view": 1, 
+   "label": "Item Code", 
+   "length": 0, 
+   "no_copy": 0, 
+   "oldfieldname": "item_code", 
+   "oldfieldtype": "Link", 
+   "options": "Item", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "print_width": "150px", 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 1, 
+   "set_only_once": 0, 
+   "unique": 0, 
+   "width": "150px"
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "col_break1", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "item_name", 
+   "fieldtype": "Data", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 1, 
+   "label": "Item Name", 
+   "length": 0, 
+   "no_copy": 0, 
+   "oldfieldname": "item_name", 
+   "oldfieldtype": "Data", 
+   "options": "", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 1, 
+   "print_hide_if_no_value": 0, 
+   "print_width": "150", 
+   "read_only": 1, 
+   "report_hide": 0, 
+   "reqd": 1, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0, 
+   "width": "150"
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 1, 
+   "fieldname": "section_break_5", 
+   "fieldtype": "Section Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Description", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "description", 
+   "fieldtype": "Text Editor", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 1, 
+   "in_list_view": 1, 
+   "label": "Description", 
+   "length": 0, 
+   "no_copy": 0, 
+   "oldfieldname": "description", 
+   "oldfieldtype": "Small Text", 
+   "options": "", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "print_width": "300px", 
+   "read_only": 1, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0, 
+   "width": "300px"
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "column_break_7", 
+   "fieldtype": "Column Break", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "image", 
+   "fieldtype": "Attach Image", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Image", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "thumbnail", 
+   "fieldtype": "Attach Image", 
+   "hidden": 1, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Thumbnail", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "route", 
+   "fieldtype": "Small Text", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "route", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 1, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }
+ ], 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
+ "idx": 0, 
+ "in_create": 0, 
+ "in_dialog": 0, 
+ "is_submittable": 0, 
+ "issingle": 0, 
+ "istable": 1, 
+ "max_attachments": 0, 
+ "modified": "2016-04-22 05:57:06.261401", 
+ "modified_by": "Administrator", 
+ "module": "Portal", 
+ "name": "Homepage Featured Product", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [], 
+ "quick_entry": 1, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.py b/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.py
new file mode 100644
index 0000000..936e07d
--- /dev/null
+++ b/erpnext/portal/doctype/homepage_featured_product/homepage_featured_product.py
@@ -0,0 +1,10 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.model.document import Document
+
+class HomepageFeaturedProduct(Document):
+	pass
diff --git a/erpnext/portal/doctype/products_settings/__init__.py b/erpnext/portal/doctype/products_settings/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/portal/doctype/products_settings/__init__.py
diff --git a/erpnext/portal/doctype/products_settings/products_settings.js b/erpnext/portal/doctype/products_settings/products_settings.js
new file mode 100644
index 0000000..7a57aba
--- /dev/null
+++ b/erpnext/portal/doctype/products_settings/products_settings.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2016, Frappe Technologies Pvt. Ltd. and contributors
+// For license information, please see license.txt
+
+frappe.ui.form.on('Products Settings', {
+	refresh: function(frm) {
+
+	}
+});
diff --git a/erpnext/portal/doctype/products_settings/products_settings.json b/erpnext/portal/doctype/products_settings/products_settings.json
new file mode 100644
index 0000000..90de96c
--- /dev/null
+++ b/erpnext/portal/doctype/products_settings/products_settings.json
@@ -0,0 +1,106 @@
+{
+ "allow_copy": 0, 
+ "allow_import": 0, 
+ "allow_rename": 0, 
+ "creation": "2016-04-22 09:11:55.272398", 
+ "custom": 0, 
+ "docstatus": 0, 
+ "doctype": "DocType", 
+ "document_type": "", 
+ "fields": [
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "description": "If checked, the Home page will be the default Item Group for the website", 
+   "fieldname": "home_page_is_products", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Home Page is Products", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
+   "fieldname": "products_as_list", 
+   "fieldtype": "Check", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Show Products as a List", 
+   "length": 0, 
+   "no_copy": 0, 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }
+ ], 
+ "hide_heading": 0, 
+ "hide_toolbar": 0, 
+ "idx": 0, 
+ "in_create": 0, 
+ "in_dialog": 0, 
+ "is_submittable": 0, 
+ "issingle": 1, 
+ "istable": 0, 
+ "max_attachments": 0, 
+ "modified": "2016-04-22 09:11:59.537639", 
+ "modified_by": "Administrator", 
+ "module": "Portal", 
+ "name": "Products Settings", 
+ "name_case": "", 
+ "owner": "Administrator", 
+ "permissions": [
+  {
+   "amend": 0, 
+   "apply_user_permissions": 0, 
+   "cancel": 0, 
+   "create": 1, 
+   "delete": 1, 
+   "email": 1, 
+   "export": 0, 
+   "if_owner": 0, 
+   "import": 0, 
+   "permlevel": 0, 
+   "print": 1, 
+   "read": 1, 
+   "report": 0, 
+   "role": "Website Manager", 
+   "set_user_permissions": 0, 
+   "share": 1, 
+   "submit": 0, 
+   "write": 1
+  }
+ ], 
+ "quick_entry": 1, 
+ "read_only": 0, 
+ "read_only_onload": 0, 
+ "sort_field": "modified", 
+ "sort_order": "DESC", 
+ "track_seen": 0
+}
\ No newline at end of file
diff --git a/erpnext/portal/doctype/products_settings/products_settings.py b/erpnext/portal/doctype/products_settings/products_settings.py
new file mode 100644
index 0000000..f17ae9f
--- /dev/null
+++ b/erpnext/portal/doctype/products_settings/products_settings.py
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and contributors
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import frappe
+from frappe.utils import cint
+from frappe.model.document import Document
+
+class ProductsSettings(Document):
+	def validate(self):
+		if self.home_page_is_products:
+			website_settings = frappe.get_doc('Website Settings')
+			website_settings.home_page = 'products'
+			website_settings.save()
+
+def home_page_is_products(doc, method):
+	'''Called on saving Website Settings'''
+	home_page_is_products = cint(frappe.db.get_single_value('Products Settings', 'home_page_is_products'))
+	if home_page_is_products:
+		doc.home_page = 'products'
+
diff --git a/erpnext/public/css/website.css b/erpnext/public/css/website.css
index a57bf33..8b5b900 100644
--- a/erpnext/public/css/website.css
+++ b/erpnext/public/css/website.css
@@ -23,7 +23,7 @@
   background-size: cover;
   background-repeat: no-repeat;
   background-position: center top;
-  border-bottom: 1px dashed #EBEFF2;
+  border-radius: 4px;
 }
 .product-image.missing-image {
   width: 100%;
@@ -32,8 +32,9 @@
   background-size: cover;
   background-repeat: no-repeat;
   background-position: center top;
+  border-radius: 4px;
   position: relative;
-  border-bottom: 1px dashed #EBEFF2;
+  background-color: #EBEFF2;
 }
 .product-image.missing-image .octicon {
   font-size: 32px;
@@ -66,3 +67,60 @@
 .featured-products {
   border-top: 1px solid #EBEFF2;
 }
+.transaction-list-item {
+  border-bottom: none;
+  padding: 30px;
+  margin: 0px -30px;
+}
+.transaction-list-item:hover,
+.transaction-list-item:active,
+.transaction-list-item:focus {
+  background-color: #fafbfc;
+}
+.transaction-list-item .indicator {
+  font-size: inherit;
+  font-weight: inherit;
+  color: #8D99A6;
+  margin-left: -15px;
+}
+.transaction-list-item .items-preview,
+.transaction-list-item .transaction-time {
+  margin-top: 5px;
+}
+.transaction-subheading .indicator {
+  font-weight: inherit;
+  color: #8D99A6;
+}
+.order-container {
+  margin: 50px 0px;
+}
+.order-container .order-item-header .h6 {
+  padding: 7px 15px;
+}
+.order-container .order-items {
+  margin: 30px 0px 0px;
+}
+.order-container .order-item-table {
+  margin: 0px -15px;
+}
+.order-container .order-item-header {
+  border-bottom: 1px solid #d1d8dd;
+}
+.order-container .order-image-col {
+  padding-right: 0px;
+}
+.order-container .order-image {
+  max-width: 55px;
+  max-height: 55px;
+  margin-top: -5px;
+}
+.order-container .order-taxes {
+  margin-top: 30px;
+}
+.order-container .order-taxes .row {
+  margin-top: 15px;
+}
+.order-container .tax-grand-total-row {
+  border-top: 1px solid #d1d8dd;
+  padding-top: 15px;
+}
diff --git a/erpnext/public/less/website.less b/erpnext/public/less/website.less
index 7b0f1d6..b420ba6 100644
--- a/erpnext/public/less/website.less
+++ b/erpnext/public/less/website.less
@@ -1,10 +1,13 @@
 @border-color: #d1d8dd;
-@light-border-color:  #EBEFF2;
+@light-border-color: #EBEFF2;
+@text-muted: #8D99A6;
+@light-bg: #fafbfc;
 
 .web-long-description {
 	font-size: 18px;
 	line-height: 200%;
 }
+
 .item-stock {
 	margin-bottom: 10px !important;
 }
@@ -14,10 +17,6 @@
 	text-align: center;
 }
 
-.product-image-wrapper {
-
-}
-
 @media (max-width: 767px) {
 	.product-image {
 		height: 0px;
@@ -33,13 +32,13 @@
 	background-size: cover;
 	background-repeat: no-repeat;
 	background-position: center top;
-	border-bottom: 1px dashed @light-border-color;
+	border-radius: 4px;
 }
 
 .product-image.missing-image {
 	.product-image-square;
 	position: relative;
-	border-bottom: 1px dashed @light-border-color;
+	background-color: @light-border-color;
 }
 
 .product-image.missing-image .octicon {
@@ -78,3 +77,83 @@
 .featured-products {
 	border-top: 1px solid @light-border-color;
 }
+
+.transaction-list-item {
+	border-bottom: none;
+	padding: 30px;
+	margin: 0px -30px;
+
+	&:hover,
+	&:active,
+	&:focus {
+		background-color: @light-bg;
+	}
+
+	.indicator {
+		font-size: inherit;
+		font-weight: inherit;
+		color: @text-muted;
+		margin-left: -15px;
+	}
+
+	.transaction-time {
+		// margin-left: 15px;
+	}
+
+	.items-preview,
+	.transaction-time {
+		margin-top: 5px;
+	}
+}
+
+// order.html
+.transaction-subheading {
+	.indicator {
+		font-weight: inherit;
+		color: @text-muted;
+	}
+}
+
+.order-container {
+	margin: 50px 0px;
+
+	.order-item-header .h6 {
+		padding: 7px 15px;
+	}
+
+	.order-items {
+		margin: 30px 0px 0px;
+	}
+
+	.order-item-table {
+		margin: 0px -15px;
+	}
+
+	.order-item-header {
+		border-bottom: 1px solid #d1d8dd;
+	}
+
+	.order-image-col {
+		padding-right: 0px;
+	}
+
+	.order-image {
+		max-width: 55px;
+		max-height: 55px;
+		margin-top: -5px;
+	}
+
+	.order-taxes {
+		margin-top: 30px;
+
+		.row {
+			margin-top: 15px;
+		}
+	}
+
+	.tax-grand-total-row {
+		border-top: 1px solid @border-color;
+		padding-top: 15px;
+	}
+}
+
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 878eb9b..c8a8d7d 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -310,10 +310,13 @@
 def get_list_context(context=None):
 	from erpnext.controllers.website_list_for_contact import get_list_context
 	list_context = get_list_context(context)
-	list_context["show_sidebar"] = True
-	list_context["show_search"] = True
-	list_context["title"] = _("My Orders")
-	list_context["parents"] = [{"title": _("My Account"), "name": "me"}]
+	list_context.update({
+		'show_sidebar': True,
+		'show_search': True,
+		'no_breadcrumbs': True,
+		'title': _('Orders'),
+	})
+
 	return list_context
 
 @frappe.whitelist()
@@ -338,10 +341,10 @@
 def make_material_request(source_name, target_doc=None):
 	def postprocess(source, doc):
 		doc.material_request_type = "Purchase"
-		
+
 	def update_item(source, target, source_parent):
 		target.project = source_parent.project
-		
+
 
 	so = frappe.get_doc("Sales Order", source_name)
 
diff --git a/erpnext/templates/includes/macros.html b/erpnext/templates/includes/macros.html
index 81a10c2..05181c0 100644
--- a/erpnext/templates/includes/macros.html
+++ b/erpnext/templates/includes/macros.html
@@ -1,7 +1,6 @@
 {% macro product_image_square(website_image, css_class="") %}
 <div class="product-image product-image-square {% if not website_image -%} missing-image {%- endif %} {{ css_class }}"
 	{% if website_image -%} style="background-image: url('{{ frappe.utils.quoted(website_image) | abs_url }}');" {%- endif %}>
-	{% if not website_image -%}<i class="centered octicon octicon-device-camera"></i>{%- endif %}
 </div>
 {% endmacro %}
 
@@ -9,8 +8,6 @@
     <div class="product-image {% if not website_image -%} missing-image {%- endif %} {{ css_class }}">
     	{% if website_image -%}
     		<img src="{{ frappe.utils.quoted(website_image) | abs_url }}" class="img-responsive">
-    	{%- else -%}
-    		<i class="centered octicon octicon-device-camera"></i>
     	{%- endif %}
     </div>
 {% endmacro %}
diff --git a/erpnext/templates/includes/order/order.css b/erpnext/templates/includes/order/order.css
deleted file mode 100644
index 54c8d0f..0000000
--- a/erpnext/templates/includes/order/order.css
+++ /dev/null
@@ -1,25 +0,0 @@
-.order-container {
-	margin: 50px 0px;
-}
-
-.order-items {
-	margin: 20px 0px;
-}
-
-.order-item-table {
-	margin: 0px -15px;
-}
-
-.order-item-header {
-	border-bottom: 1px solid #d1d8dd;
-}
-
-.order-image-col {
-	padding-right: 0px;
-}
-
-.order-image {
-	max-width: 55px;
-	max-height: 55px;
-	margin-top: -5px;
-}
diff --git a/erpnext/templates/includes/order/order_taxes.html b/erpnext/templates/includes/order/order_taxes.html
index 8c8e886..564e31e 100644
--- a/erpnext/templates/includes/order/order_taxes.html
+++ b/erpnext/templates/includes/order/order_taxes.html
@@ -1,20 +1,20 @@
 {% if doc.taxes %}
 <div class="row tax-net-total-row">
-    <div class="col-xs-6 text-right">{{ _("Net Total") }}</div>
-    <div class="col-xs-6 text-right">
+    <div class="col-xs-8 text-right">{{ _("Net Total") }}</div>
+    <div class="col-xs-4 text-right">
         {{ doc.get_formatted("net_total") }}</div>
 </div>
 {% endif %}
 {% for d in doc.taxes %}
-<div class="row  tax-row">
-    <div class="col-xs-6 text-right">{{ d.description }}</div>
-    <div class="col-xs-6 text-right">
+<div class="row tax-row">
+    <div class="col-xs-8 text-right">{{ d.description }}</div>
+    <div class="col-xs-4 text-right">
         {{ d.get_formatted("base_tax_amount") }}</div>
 </div>
 {% endfor %}
 <div class="row tax-grand-total-row">
-    <div class="col-xs-6 text-right">{{ _("Grand Total") }}</div>
-    <div class="col-xs-6 text-right">
+    <div class="col-xs-8 text-right">{{ _("Grand Total") }}</div>
+    <div class="col-xs-4 text-right">
         <span class="tax-grand-total">
             {{ doc.get_formatted("grand_total") }}
         </span>
diff --git a/erpnext/templates/includes/transaction_row.html b/erpnext/templates/includes/transaction_row.html
index a52bb60..05aed90 100644
--- a/erpnext/templates/includes/transaction_row.html
+++ b/erpnext/templates/includes/transaction_row.html
@@ -1,17 +1,27 @@
-<div class="web-list-item">
-<a href="/{{ pathname }}/{{ doc.name }}">
-<div class="row">
-	<div class="col-sm-6">
+<div class="web-list-item transaction-list-item">
+	<a href="/{{ pathname }}/{{ doc.name }}">
+		<div class="row">
+			<div class="col-sm-6">
+				<span>{{ doc.name }}</span>
+				<div class="small text-muted items-preview text-ellipsis">
+					{{ doc.items_preview }}
+				</div>
+			</div>
+			<div class="col-sm-4">
+				<span class="indicator {{ doc.indicator_color or "darkgrey" }}">
+					{{ doc.indicator_title or doc.status }}
+				</span>
+				<div class="small text-muted transaction-time"
+					title="{{ frappe.utils.format_datetime(doc.modified, "medium") }}">
+					{{ frappe.utils.pretty_date(doc.modified) }}
+				</div>
+			</div>
+			<div class="col-sm-2 text-right">
+				{{ doc.get_formatted("grand_total") }}
+			</div>
+			<!-- <div class="col-sm-3 text-right">
 
-                <span class="indicator {{ doc.indicator_color or "darkgrey" }}">{{ doc.name }}</span>
-                <div class="small text-muted">{{ doc.items_preview }}</div>
-
-	</div>
-	<div class="col-sm-3 col-xs-5">
-		{{ doc.get_formatted("grand_total") }}
-	</div>
-	<div class="col-sm-3 small text-muted text-right" title="{{ frappe.utils.format_datetime(doc.creation, "medium") }}">
-		{{ frappe.utils.pretty_date(doc.creation) }}</div>
-</div>
-</a>
+			</div> -->
+		</div>
+	</a>
 </div>
diff --git a/erpnext/templates/pages/cart.html b/erpnext/templates/pages/cart.html
index f2104f9..afba9b8 100644
--- a/erpnext/templates/pages/cart.html
+++ b/erpnext/templates/pages/cart.html
@@ -68,7 +68,7 @@
           </div>
           <div class="cart-link">
             <a href="#" onclick="show_terms();return false;">*Terms and Conditions</a>
-          </div>  
+          </div>
         {% endif %}
     	<div class="cart-addresses">
             {% include "templates/includes/cart/cart_address.html" %}
diff --git a/erpnext/templates/pages/home.html b/erpnext/templates/pages/home.html
index 5c0f330..e6cfc90 100644
--- a/erpnext/templates/pages/home.html
+++ b/erpnext/templates/pages/home.html
@@ -1,31 +1,48 @@
 {% extends "templates/web.html" %}
+{% from "erpnext/templates/includes/macros.html" import product_image_square %}
 
-{% block title %}{{brand_html}}{% endblock %}
+{% block title %}{{ brand_html }}{% endblock %}
 
 {% block page_content %}
-<script>{% include "templates/includes/product_list.js" %}</script>
-
-<script>
-frappe.ready(function() {
-	window.start = 0;
-	window.get_product_list();
-});
-</script>
 
 <div class="row">
 	<div class="col-sm-12">
-		<h2 class="text-center">{{ tag_line }}</h2>
-		<p class="lead text-center">{{ description }}</p>
-		<p class="text-center"><a href="/login" class="btn btn-primary text-center">Login</a></p>
-		<div style="margin-top:75px;">
-		<h5>{{_("FEATURED PRODUCTS")}}</h5>	
-		<div class="featured-products">	
-		<div id="search-list" class="row" style="margin-top:40px;">
+		<h2 class="text-center">{{ homepage.tag_line or '' }}</h2>
+		<p class="lead text-center">{{ homepage.description or '' }}</p>
+		<p class="text-center">
+			<a href="/login" class="btn btn-primary text-center">Login</a>
+		</p>
 
+		{% if homepage.products %}
+		<!-- TODO: styling of this section -->
+		<div class='featured-products-section'>
+			<h5 class='text-uppercase'>{{ _("Featured Products") }}</h5>
+			<div class="featured-products">
+				<div id="search-list" class="row" style="margin-top:40px;">
+					{% for item in homepage.products %}
+						<a class="product-link" href="{{ item.route | abs_url }}">
+							<div class="col-sm-4 product-image-wrapper">
+								{{ product_image_square(item.thumbnail or item.image) }}
+								<div class="text-ellipsis inline-block small product-text">
+									{{ item.item_name }}
+								</div>
+							</div>
+						</a>
+					{% endfor %}
+				</div>
+			</div>
+			<!-- TODO: remove hardcoding of /products -->
+			<p class="text-center"><a href="/products" class="btn btn-primary">More Products</a></p>
 		</div>
-		</div>
-		<p class="text-center"><a href="/products" class="btn btn-primary">More Products</a></p>
-	</div>
+		{% endif %}
 	</div>
 </div>
 {% endblock %}
+
+{% block style %}
+<style>
+	.featured-products-section {
+		margin-top: 75px;
+	}
+</style>
+{% endblock %}
diff --git a/erpnext/templates/pages/home.py b/erpnext/templates/pages/home.py
index af75097..9488efe 100644
--- a/erpnext/templates/pages/home.py
+++ b/erpnext/templates/pages/home.py
@@ -9,6 +9,13 @@
 no_cache = 1
 no_sitemap = 1
 
+def get_context(context):
+	homepage = frappe.get_doc('Homepage')
+	return {
+		'homepage': homepage
+	}
+
+
 @frappe.whitelist(allow_guest=True)
 def get_product_list(search=None, start=0, limit=6):
 	# limit = 12 because we show 12 items in the grid view
diff --git a/erpnext/templates/pages/order.html b/erpnext/templates/pages/order.html
index 3252eb9..191b078 100644
--- a/erpnext/templates/pages/order.html
+++ b/erpnext/templates/pages/order.html
@@ -1,32 +1,24 @@
 {% extends "templates/web.html" %}
-
-{% block header %}
-<h1>{{ doc.name }}</h1>
-<!-- <h6 class="text-muted">{{ doc._title or doc.doctype }}</h6> -->
-{% endblock %}
+{% from "erpnext/templates/includes/order/order_macros.html" import item_name_and_description %}
 
 {% block breadcrumbs %}
 	{% include "templates/includes/breadcrumbs.html" %}
 {% endblock %}
 
-{% block style %}
-<style>
-    {% include "templates/includes/order/order.css" %}
-</style>
+{% block header %}
+<h1>{{ doc.name }}</h1>
 {% endblock %}
 
 {% block page_content %}
 
-{% from "erpnext/templates/includes/order/order_macros.html" import item_name_and_description %}
-
-<div class="row">
+<div class="row transaction-subheading">
     <div class="col-xs-6">
         <span class="indicator {{ doc.indicator_color or "darkgrey" }}">
             {{ doc.indicator_title or doc.status or "Submitted" }}
         </span>
 	</div>
-    <div class="col-xs-6 text-muted text-right h6">
-        {{ doc.get_formatted("transaction_date") }}
+    <div class="col-xs-6 text-muted text-right small">
+        {{ frappe.utils.formatdate(doc.transaction_date, 'medium') }}
     </div>
 </div>
 
@@ -38,14 +30,14 @@
 
     <!-- items -->
     <div class="order-item-table">
-        <div class="row order-items order-item-header">
-            <div class="col-sm-8 col-xs-6 h6">
+        <div class="row order-items order-item-header text-muted">
+            <div class="col-sm-8 col-xs-6 h6 text-uppercase">
                 {{ _("Item") }}
             </div>
-            <div class="col-sm-2 col-xs-3 text-right h6">
+            <div class="col-sm-2 col-xs-3 text-right h6 text-uppercase">
                 {{ _("Quantity") }}
             </div>
-            <div class="col-sm-2 col-xs-3 text-right h6">
+            <div class="col-sm-2 col-xs-3 text-right h6 text-uppercase">
                 {{ _("Amount") }}
             </div>
         </div>
@@ -71,9 +63,9 @@
     </div>
 
     <!-- taxes -->
-    <div class="order-taxes row small">
-        <div class="col-sm-8"><!-- empty --></div>
-        <div class="col-sm-4">
+    <div class="order-taxes row">
+        <div class="col-sm-6"><!-- empty --></div>
+        <div class="col-sm-6 text-right">
             {% include "erpnext/templates/includes/order/order_taxes.html" %}
         </div>
     </div>