diff --git a/theme_eco_food/README.rst b/theme_eco_food/README.rst
new file mode 100644
index 000000000..9affcfc7b
--- /dev/null
+++ b/theme_eco_food/README.rst
@@ -0,0 +1,49 @@
+.. image:: https://img.shields.io/badge/license-LGPL--3-green.svg
+ :target: https://www.gnu.org/licenses/lgpl-3.0-standalone.html
+ :alt: License: LGPL-3
+
+Theme Eco Food
+==============
+* Design Web Pages with Theme Eco Food
+
+Installation
+============
+- www.odoo.com/documentation/18.0/setup/install.html
+- Install our custom addon
+
+License
+-------
+General Public License, Version 3 (LGPL v3).
+(http://www.gnu.org/licenses/lgpl-3.0-standalone.html)
+
+Company
+-------
+* `Cybrosys Techno Solutions `__
+
+Credits
+-------
+* Developer: (V18) Athira K
+ (V17) Fouzan M,
+
+* Contact: odoo@cybrosys.com
+
+Contacts
+--------
+* Mail Contact : odoo@cybrosys.com
+* Website : https://cybrosys.com
+
+Bug Tracker
+-----------
+Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
+
+Maintainer
+==========
+.. image:: https://cybrosys.com/images/logo.png
+ :target: https://cybrosys.com
+This module is maintained by Cybrosys Technologies.
+
+For support and more information, please visit https://www.cybrosys.com
+
+Further information
+===================
+HTML Description: ``__
diff --git a/theme_eco_food/__init__.py b/theme_eco_food/__init__.py
new file mode 100644
index 000000000..623ebb15e
--- /dev/null
+++ b/theme_eco_food/__init__.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from . import controllers
+from . import models
diff --git a/theme_eco_food/__manifest__.py b/theme_eco_food/__manifest__.py
new file mode 100644
index 000000000..b02481d79
--- /dev/null
+++ b/theme_eco_food/__manifest__.py
@@ -0,0 +1,97 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+{
+ 'name': 'Theme Eco Food',
+ 'version': '18.0.1.0.0',
+ 'summary': 'Design Web Pages with theme Eco food',
+ 'description': 'Theme Eco Food is an attractive and modern eCommerce'
+ ' Website theme for Odoo 18.',
+ 'category': 'Theme/eCommerce',
+ 'author': 'Cybrosys Techno Solutions',
+ 'company': 'Cybrosys Techno Solutions',
+ 'maintainer': 'Cybrosys Techno Solutions',
+ 'website': "https://www.cybrosys.com",
+ 'depends': ['website', 'website_sale', 'website_sale_wishlist',
+ 'website_blog'],
+ 'data': [
+ 'data/eco_life_product_data.xml',
+ 'security/ir.model.access.csv',
+ 'views/shop_template.xml',
+ 'views/best_seller_views.xml',
+ 'views/recently_added_views.xml',
+ 'views/featured_product_views.xml',
+ 'views/new_arrival_views.xml',
+ 'views/footer_template.xml',
+ 'views/header_template.xml',
+ 'views/contact_template.xml',
+ 'views/checkout_template.xml',
+ 'views/testimonial_views.xml',
+ 'views/snippets/banner_template.xml',
+ 'views/snippets/best_seller_template.xml',
+ 'views/snippets/client_template.xml',
+ 'views/snippets/featured_product_template.xml',
+ 'views/snippets/new_arrival_template.xml',
+ 'views/snippets/recently_added_template.xml',
+ 'views/snippets/service_template.xml',
+ 'views/snippets/testimonial_template.xml',
+ 'views/snippets/website_ad_template.xml',
+ 'views/snippets/ad_template.xml',
+ 'views/snippets/snippet_templates.xml',
+ ],
+ 'assets': {
+ 'web.assets_frontend': [
+ 'theme_eco_food/static/src/css/animate.css',
+ 'theme_eco_food/static/src/xml/snippets/best_seller.xml',
+ 'theme_eco_food/static/src/xml/snippets/featured_products.xml',
+ 'theme_eco_food/static/src/xml/snippets/new_arrival_products.xml',
+ 'theme_eco_food/static/src/xml/snippets/recently_added.xml',
+ 'theme_eco_food/static/src/xml/snippets/testimonial.xml',
+ 'theme_eco_food/static/src/css/animate.min.css',
+ 'theme_eco_food/static/src/css/bootstrap-dropdownhover.css',
+ 'theme_eco_food/static/src/css/bootstrap-dropdownhover.min.css',
+ 'theme_eco_food/static/src/css/bootstrap-icons.css',
+ 'theme_eco_food/static/src/css/owl.carousel.min.css',
+ 'theme_eco_food/static/src/css/owl.theme.default.min.css',
+ 'https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css',
+ 'theme_eco_food/static/src/css/style.css',
+ 'theme_eco_food/static/src/js/owl.carousel.js',
+ 'theme_eco_food/static/src/js/owl.carousel.min.js',
+ 'theme_eco_food/static/src/js/script.js',
+ 'theme_eco_food/static/src/js/index.js',
+ 'theme_eco_food/static/src/js/new_arrivals.js',
+ 'theme_eco_food/static/src/js/best_seller.js',
+ 'theme_eco_food/static/src/js/featured_products.js',
+ 'theme_eco_food/static/src/js/recently_added.js',
+ 'theme_eco_food/static/src/js/testimonial.js',
+ 'theme_eco_food/static/src/js/website_sale.js',
+ 'theme_eco_food/static/src/js/custom.js',
+ ],
+ },
+ 'images': [
+ 'static/description/banner.jpg',
+ 'static/description/theme_screenshot.jpg',
+ ],
+ 'license': 'LGPL-3',
+ 'installable': True,
+ 'application': False,
+ 'auto_install': False,
+}
diff --git a/theme_eco_food/controllers/__init__.py b/theme_eco_food/controllers/__init__.py
new file mode 100644
index 000000000..4b302724f
--- /dev/null
+++ b/theme_eco_food/controllers/__init__.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from . import website_eco_food
+from . import website_sale
+from . import website_sale_wishlist
diff --git a/theme_eco_food/controllers/website_eco_food.py b/theme_eco_food/controllers/website_eco_food.py
new file mode 100644
index 000000000..ec809fa3f
--- /dev/null
+++ b/theme_eco_food/controllers/website_eco_food.py
@@ -0,0 +1,132 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import http
+from odoo.http import request
+
+
+class WebsiteEcoFood(http.Controller):
+ """ Class for website to add extra functions"""
+
+ @http.route('/get_best_seller', auth="public", type='json')
+ def get_best_seller(self):
+ """this function is used to retrieve the best-selling product"""
+ products = request.env.ref(
+ 'theme_eco_food.best_seller_product').product_tmpl_ids.sorted(
+ key=lambda x: x.sales_count, reverse=True)[:10]
+ best_seller = [{'id': product.id,
+ 'name': product.name,
+ 'category': product.categ_id.name,
+ 'rating_avg': product.rating_avg,
+ 'list_price': product.list_price,
+ 'currency': product.currency_id.symbol
+ } for product in products]
+ return best_seller
+
+ @http.route('/get_featured_products', auth="public", type='json')
+ def get_featured_products(self):
+ """this function is used to retrieve featured products"""
+ products = request.env.ref(
+ 'theme_eco_food.featured_product').product_tmpl_ids.sorted(
+ key=lambda x: x.id, reverse=True)[:8]
+ values = {
+ f'slide{i + 1}': [{'id': product.id,
+ 'name': product.name,
+ 'category': product.categ_id.name,
+ 'rating_avg': product.rating_avg,
+ 'list_price': product.list_price,
+ 'currency': product.currency_id.symbol
+ } for product in products[i * 4:(i + 1) * 4]]
+ for i in range((len(products) + 3) // 4)
+ }
+ return values
+
+ @http.route('/get_recently_added_products', auth="public", type='json')
+ def get_recently_added_products(self):
+ """this function will return the most recently added products."""
+ products = request.env.ref(
+ 'theme_eco_food.recently_added_product').product_tmpl_ids.sorted(
+ key=lambda x: x.id, reverse=True)[:16]
+ values = {
+ f'slide{i + 1}': [{'id': product.id,
+ 'name': product.name,
+ 'category': product.categ_id.name,
+ 'rating_avg': product.rating_avg,
+ 'list_price': product.list_price,
+ 'currency': product.currency_id.symbol
+ } for product in products[i * 8:(i + 1) * 8]]
+ for i in range((len(products) + 7) // 8)
+ }
+ return values
+
+ @http.route('/get_new_arrivals', auth="public", type='json')
+ def get_new_arrivals(self):
+ """this function is used to retrieve new arrival products"""
+ products = request.env.ref(
+ 'theme_eco_food.new_arrival_product').product_tmpl_ids.sorted(
+ key=lambda x: x.id, reverse=True)[:16]
+ values = [{
+ 'id': product.id,
+ 'name': product.name,
+ 'category': product.categ_id.name,
+ 'rating_avg': product.rating_avg,
+ 'list_price': product.list_price,
+ 'currency': product.currency_id.symbol
+ } for product in products]
+ return values
+
+ @http.route('/get_testimonials', auth="public", type='json')
+ def get_testimonials(self):
+ """this function is used to retrieve testimonials.py"""
+ testimonials = request.env['ecofood.testimonial'].search([]).sorted(
+ key=lambda x: x.id, reverse=True)[:16]
+ values = {
+ f'slide{i + 1}': [{'id': record.id,
+ 'name': record.partner_id.name,
+ 'email': record.partner_id.email,
+ 'review': record.review
+ } for record in testimonials[i * 2:(i + 1) * 2]]
+ for i in range((len(testimonials) + 1) // 2)
+ }
+ return values
+
+ @http.route('/subscribe_newsletter', auth='public', type='json')
+ def subscribe_newsletter(self, **kw):
+ """ To save email to a newsletter mail list"""
+ if request.env['mailing.contact'].sudo().search([
+ ("email", "=", kw.get("email")),
+ ("list_ids", "in",
+ [request.env.ref('mass_mailing.mailing_list_data').id])]):
+ return False
+ elif request.env.user._is_public():
+ visitor_sudo = (request.env['website.visitor'].sudo()
+ ._get_visitor_from_request())
+ name = visitor_sudo.display_name if visitor_sudo else \
+ "Website Visitor"
+ else:
+ name = request.env.user.partner_id.name
+ request.env['mailing.contact'].sudo().create({
+ "name": name,
+ "email": kw.get('email'),
+ "list_ids": [request.env.ref(
+ 'mass_mailing.mailing_list_data').id]
+ })
+ return True
diff --git a/theme_eco_food/controllers/website_sale.py b/theme_eco_food/controllers/website_sale.py
new file mode 100644
index 000000000..f6d80ed6d
--- /dev/null
+++ b/theme_eco_food/controllers/website_sale.py
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import http
+from odoo.http import request
+from odoo.addons.website_sale.controllers.main import TableCompute, WebsiteSale
+from odoo.tools import lazy
+
+
+class EcoFoodWebsiteSale(WebsiteSale):
+ """This function helps to override the functionalities of a website shop"""
+
+ @http.route()
+ def shop(self, **post):
+ """this function is used to set products based on selected category on
+ the category snippet option"""
+ result = super().shop(**post)
+ page = post.get('page', 0)
+ post.pop('page', None)
+ search_product = result.qcontext['search_product']
+ search_product = request.env['product.template'].sudo().search([
+ ('id', 'in', search_product.ids),
+ ('selected_att', '=', True)
+ ])
+ if search_product:
+ product_count = len(search_product)
+ ppg = result.qcontext['ppg']
+ ppr = result.qcontext['ppr']
+ url = '/shop'
+ website = request.env['website'].get_current_website()
+ pager = website.pager(url=url, total=product_count, page=page,
+ step=ppg, url_args=post)
+ offset = pager['offset']
+ products = search_product[offset:offset + ppg]
+ result.qcontext['search_product'] = search_product
+ result.qcontext['search_count'] = product_count
+ result.qcontext['pager'] = pager
+ result.qcontext['products'] = products
+ result.qcontext['bins'] = lazy(
+ lambda: TableCompute().process(products, ppg, ppr))
+ if products:
+ result.qcontext['attributes'] = lazy(
+ lambda: request.env['product.attribute'].search([
+ ('product_tmpl_ids', 'in', search_product.ids),
+ ('visibility', '=', 'visible')]))
+ return result
diff --git a/theme_eco_food/controllers/website_sale_wishlist.py b/theme_eco_food/controllers/website_sale_wishlist.py
new file mode 100644
index 000000000..d2b431f68
--- /dev/null
+++ b/theme_eco_food/controllers/website_sale_wishlist.py
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import http
+from odoo.http import request
+from odoo.addons.website_sale.controllers.main import WebsiteSale
+
+
+class WebsiteSaleWishlist(WebsiteSale):
+ """This function helps to override the functionalities of a wishlist"""
+
+ @http.route()
+ def add_to_wishlist(self, product_id, **kw):
+ """Function to check product is exits in wishlist list or not"""
+ if kw.get('is_template'):
+ product_id = request.env['product.template'].sudo().browse(
+ product_id)._get_first_possible_variant_id()
+ wish = request.env['product.wishlist'].sudo().search([
+ ('product_id', '=', product_id)
+ ])
+ return False if wish else super().add_to_wishlist(product_id, **kw)
diff --git a/theme_eco_food/data/eco_life_product_data.xml b/theme_eco_food/data/eco_life_product_data.xml
new file mode 100644
index 000000000..7d58dbd02
--- /dev/null
+++ b/theme_eco_food/data/eco_life_product_data.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+ Best Seller
+
+
+ Featured Product
+
+
+ New Arrival
+
+
+ Recently Added Products
+
+
+
diff --git a/theme_eco_food/doc/RELEASE_NOTES.md b/theme_eco_food/doc/RELEASE_NOTES.md
new file mode 100644
index 000000000..4d4b0f4a2
--- /dev/null
+++ b/theme_eco_food/doc/RELEASE_NOTES.md
@@ -0,0 +1,7 @@
+## Module
+
+#### 01.08.2025
+#### Version 18.0.1.0.0
+#### ADD
+
+- Initial commit for Theme Eco Food
diff --git a/theme_eco_food/models/__init__.py b/theme_eco_food/models/__init__.py
new file mode 100644
index 000000000..9c8b751b1
--- /dev/null
+++ b/theme_eco_food/models/__init__.py
@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from . import best_seller
+from . import featured_products
+from . import new_arrival
+from . import product_template
+from . import recently_added
+from . import testimonial
diff --git a/theme_eco_food/models/best_seller.py b/theme_eco_food/models/best_seller.py
new file mode 100644
index 000000000..548c1e2c1
--- /dev/null
+++ b/theme_eco_food/models/best_seller.py
@@ -0,0 +1,36 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import fields, models
+
+
+class BestSeller(models.Model):
+ """This is used to set the Best sellers and their corresponding products for
+ the snippet"""
+ _name = "best.seller"
+ _description = "Best Seller"
+
+ name = fields.Char(required=True, string="Name", help='Name of the category.')
+ product_tmpl_ids = fields.Many2many('product.template',
+ domain="[('sale_ok', '=', True),"
+ " ('is_published', '=', True)]",
+ string="Best-Selling Products",
+ help="Choose best selling products")
diff --git a/theme_eco_food/models/featured_products.py b/theme_eco_food/models/featured_products.py
new file mode 100644
index 000000000..966a05bf0
--- /dev/null
+++ b/theme_eco_food/models/featured_products.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import fields, models
+
+
+class FeaturedProducts(models.Model):
+ """model to manage featured products."""
+ _name = "featured.products"
+ _description = "Featured Products"
+
+ name = fields.Char(required=True, string="Name", help='Name of the category.')
+ product_tmpl_ids = fields.Many2many('product.template',
+ domain="[('sale_ok', '=', True),"
+ " ('is_published', '=', True)]",
+ string="Featured Products",
+ help="Choose featured products")
diff --git a/theme_eco_food/models/new_arrival.py b/theme_eco_food/models/new_arrival.py
new file mode 100644
index 000000000..515115d58
--- /dev/null
+++ b/theme_eco_food/models/new_arrival.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import fields, models
+
+
+class NewArrival(models.Model):
+ """model to manage new arrival products"""
+ _name = "new.arrival"
+ _description = "New Arrival Products"
+
+ name = fields.Char(required=True, string="Name", help='Name of the category.')
+ product_tmpl_ids = fields.Many2many('product.template',
+ domain="[('sale_ok', '=', True),"
+ " ('is_published', '=', True)]",
+ string="New Arrival Products",
+ help="Choose new arrival products")
diff --git a/theme_eco_food/models/product_template.py b/theme_eco_food/models/product_template.py
new file mode 100644
index 000000000..7120de3bc
--- /dev/null
+++ b/theme_eco_food/models/product_template.py
@@ -0,0 +1,42 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import api, fields, models
+
+
+class ProductTemplate(models.Model):
+ """ This model extends the 'product.template' model to add additional
+ functionality"""
+ _inherit = 'product.template'
+
+ selected_att = fields.Boolean(string='Product Selection',
+ help='to select multiple category')
+
+ @api.model
+ def get_product_selections(self, data):
+ """Function to set the value of selected_att based on the selected view
+ type in the shop page."""
+ for record in self.search([]):
+ record.selected_att = data['all']
+ if not data['all'] and data['category']:
+ for rec in record.public_categ_ids:
+ if rec.id in data['category']:
+ record.selected_att = True
diff --git a/theme_eco_food/models/recently_added.py b/theme_eco_food/models/recently_added.py
new file mode 100644
index 000000000..75a63dc76
--- /dev/null
+++ b/theme_eco_food/models/recently_added.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import fields, models
+
+
+class RecentlyAdded(models.Model):
+ """model to manage recently added product"""
+ _name = "recently.added"
+ _description = "Recently Added Products"
+
+ name = fields.Char(required=True, string='Name', help='Name of the category.')
+ product_tmpl_ids = fields.Many2many('product.template',
+ domain="[('sale_ok', '=', True),"
+ " ('is_published', '=', True)]",
+ string='Recently Added Products',
+ help="Choose recently added products")
diff --git a/theme_eco_food/models/testimonial.py b/theme_eco_food/models/testimonial.py
new file mode 100644
index 000000000..75bb4737d
--- /dev/null
+++ b/theme_eco_food/models/testimonial.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2025-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import fields, models
+
+
+class Testimonial(models.Model):
+ """model to manage testimonials.py"""
+ _name = 'ecofood.testimonial'
+ _description = 'Testimonials'
+ _rec_name = 'partner_id'
+
+ partner_id = fields.Many2one(
+ 'res.partner', string='Customer',
+ required=True, help='Customer of the testimonial')
+ review = fields.Text(help='Add your review here', string="Review")
diff --git a/theme_eco_food/security/ir.model.access.csv b/theme_eco_food/security/ir.model.access.csv
new file mode 100644
index 000000000..9855cd3b8
--- /dev/null
+++ b/theme_eco_food/security/ir.model.access.csv
@@ -0,0 +1,6 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_best_seller,best.seller,model_best_seller,base.group_user,1,1,1,1
+access_featured_products,featured.products,model_featured_products,base.group_user,1,1,1,1
+access_recently_added,recently.added,model_recently_added,base.group_user,1,1,1,1
+access_new_arrival,new.arrival,model_new_arrival,base.group_user,1,1,1,1
+access_testimonial,ecofood.testimonial,model_ecofood_testimonial,base.group_user,1,1,1,1
diff --git a/theme_eco_food/static/description/banner.jpg b/theme_eco_food/static/description/banner.jpg
new file mode 100644
index 000000000..cefe20204
Binary files /dev/null and b/theme_eco_food/static/description/banner.jpg differ
diff --git a/theme_eco_food/static/description/icon.png b/theme_eco_food/static/description/icon.png
new file mode 100644
index 000000000..73169e47f
Binary files /dev/null and b/theme_eco_food/static/description/icon.png differ
diff --git a/theme_eco_food/static/description/img/1.png b/theme_eco_food/static/description/img/1.png
new file mode 100644
index 000000000..84f11ed37
Binary files /dev/null and b/theme_eco_food/static/description/img/1.png differ
diff --git a/theme_eco_food/static/description/img/17/app_bar.png b/theme_eco_food/static/description/img/17/app_bar.png
new file mode 100644
index 000000000..9128cd64b
Binary files /dev/null and b/theme_eco_food/static/description/img/17/app_bar.png differ
diff --git a/theme_eco_food/static/description/img/17/desktop.gif b/theme_eco_food/static/description/img/17/desktop.gif
new file mode 100644
index 000000000..9294d7cba
Binary files /dev/null and b/theme_eco_food/static/description/img/17/desktop.gif differ
diff --git a/theme_eco_food/static/description/img/17/employe.jpg b/theme_eco_food/static/description/img/17/employe.jpg
new file mode 100644
index 000000000..c180290c5
Binary files /dev/null and b/theme_eco_food/static/description/img/17/employe.jpg differ
diff --git a/theme_eco_food/static/description/img/17/event.png b/theme_eco_food/static/description/img/17/event.png
new file mode 100644
index 000000000..e93986096
Binary files /dev/null and b/theme_eco_food/static/description/img/17/event.png differ
diff --git a/theme_eco_food/static/description/img/17/kanban.png b/theme_eco_food/static/description/img/17/kanban.png
new file mode 100644
index 000000000..0e00023fb
Binary files /dev/null and b/theme_eco_food/static/description/img/17/kanban.png differ
diff --git a/theme_eco_food/static/description/img/17/mobile_form.jpg b/theme_eco_food/static/description/img/17/mobile_form.jpg
new file mode 100644
index 000000000..e15724ad1
Binary files /dev/null and b/theme_eco_food/static/description/img/17/mobile_form.jpg differ
diff --git a/theme_eco_food/static/description/img/17/mobile_kanban01.jpg b/theme_eco_food/static/description/img/17/mobile_kanban01.jpg
new file mode 100644
index 000000000..1482b7b45
Binary files /dev/null and b/theme_eco_food/static/description/img/17/mobile_kanban01.jpg differ
diff --git a/theme_eco_food/static/description/img/17/mobile_lost.jpg b/theme_eco_food/static/description/img/17/mobile_lost.jpg
new file mode 100644
index 000000000..2d80cabc2
Binary files /dev/null and b/theme_eco_food/static/description/img/17/mobile_lost.jpg differ
diff --git a/theme_eco_food/static/description/img/17/mobile_search.jpg b/theme_eco_food/static/description/img/17/mobile_search.jpg
new file mode 100644
index 000000000..fefb3db2d
Binary files /dev/null and b/theme_eco_food/static/description/img/17/mobile_search.jpg differ
diff --git a/theme_eco_food/static/description/img/17/mobile_settings.jpg b/theme_eco_food/static/description/img/17/mobile_settings.jpg
new file mode 100644
index 000000000..e3f9606c6
Binary files /dev/null and b/theme_eco_food/static/description/img/17/mobile_settings.jpg differ
diff --git a/theme_eco_food/static/description/img/17/mobile_view.gif b/theme_eco_food/static/description/img/17/mobile_view.gif
new file mode 100644
index 000000000..7f7f3f0df
Binary files /dev/null and b/theme_eco_food/static/description/img/17/mobile_view.gif differ
diff --git a/theme_eco_food/static/description/img/17/responsive.jpg b/theme_eco_food/static/description/img/17/responsive.jpg
new file mode 100644
index 000000000..4f5533ba1
Binary files /dev/null and b/theme_eco_food/static/description/img/17/responsive.jpg differ
diff --git a/theme_eco_food/static/description/img/17/sale_kanban.png b/theme_eco_food/static/description/img/17/sale_kanban.png
new file mode 100644
index 000000000..f622e822f
Binary files /dev/null and b/theme_eco_food/static/description/img/17/sale_kanban.png differ
diff --git a/theme_eco_food/static/description/img/17/search.png b/theme_eco_food/static/description/img/17/search.png
new file mode 100644
index 000000000..d420cf284
Binary files /dev/null and b/theme_eco_food/static/description/img/17/search.png differ
diff --git a/theme_eco_food/static/description/img/2.png b/theme_eco_food/static/description/img/2.png
new file mode 100644
index 000000000..f1275d823
Binary files /dev/null and b/theme_eco_food/static/description/img/2.png differ
diff --git a/theme_eco_food/static/description/img/3.png b/theme_eco_food/static/description/img/3.png
new file mode 100644
index 000000000..5b675f3b4
Binary files /dev/null and b/theme_eco_food/static/description/img/3.png differ
diff --git a/theme_eco_food/static/description/img/4.png b/theme_eco_food/static/description/img/4.png
new file mode 100644
index 000000000..8d59c42ea
Binary files /dev/null and b/theme_eco_food/static/description/img/4.png differ
diff --git a/theme_eco_food/static/description/img/5.png b/theme_eco_food/static/description/img/5.png
new file mode 100644
index 000000000..11595e3fe
Binary files /dev/null and b/theme_eco_food/static/description/img/5.png differ
diff --git a/theme_eco_food/static/description/img/6.png b/theme_eco_food/static/description/img/6.png
new file mode 100644
index 000000000..10d9afc97
Binary files /dev/null and b/theme_eco_food/static/description/img/6.png differ
diff --git a/theme_eco_food/static/description/img/7.png b/theme_eco_food/static/description/img/7.png
new file mode 100644
index 000000000..cdf29d41c
Binary files /dev/null and b/theme_eco_food/static/description/img/7.png differ
diff --git a/theme_eco_food/static/description/img/8.png b/theme_eco_food/static/description/img/8.png
new file mode 100644
index 000000000..78738666f
Binary files /dev/null and b/theme_eco_food/static/description/img/8.png differ
diff --git a/theme_eco_food/static/description/img/BLOG-4.png b/theme_eco_food/static/description/img/BLOG-4.png
new file mode 100644
index 000000000..9b6d5922d
Binary files /dev/null and b/theme_eco_food/static/description/img/BLOG-4.png differ
diff --git a/theme_eco_food/static/description/img/Production.png b/theme_eco_food/static/description/img/Production.png
new file mode 100644
index 000000000..e88dcd0d6
Binary files /dev/null and b/theme_eco_food/static/description/img/Production.png differ
diff --git a/theme_eco_food/static/description/img/arrows-repeat.svg b/theme_eco_food/static/description/img/arrows-repeat.svg
new file mode 100644
index 000000000..94fb8f7f9
--- /dev/null
+++ b/theme_eco_food/static/description/img/arrows-repeat.svg
@@ -0,0 +1,10 @@
+
diff --git a/theme_eco_food/static/description/img/banner-bg-1.svg b/theme_eco_food/static/description/img/banner-bg-1.svg
new file mode 100644
index 000000000..7af9bab87
--- /dev/null
+++ b/theme_eco_food/static/description/img/banner-bg-1.svg
@@ -0,0 +1,66 @@
+
diff --git a/theme_eco_food/static/description/img/banner-thumb.png b/theme_eco_food/static/description/img/banner-thumb.png
new file mode 100644
index 000000000..214f3414e
Binary files /dev/null and b/theme_eco_food/static/description/img/banner-thumb.png differ
diff --git a/theme_eco_food/static/description/img/best_deals.png b/theme_eco_food/static/description/img/best_deals.png
new file mode 100644
index 000000000..23b9980a3
Binary files /dev/null and b/theme_eco_food/static/description/img/best_deals.png differ
diff --git a/theme_eco_food/static/description/img/best_products.png b/theme_eco_food/static/description/img/best_products.png
new file mode 100644
index 000000000..e30407fdc
Binary files /dev/null and b/theme_eco_food/static/description/img/best_products.png differ
diff --git a/theme_eco_food/static/description/img/cards1.png b/theme_eco_food/static/description/img/cards1.png
new file mode 100644
index 000000000..180d8a440
Binary files /dev/null and b/theme_eco_food/static/description/img/cards1.png differ
diff --git a/theme_eco_food/static/description/img/cards2.png b/theme_eco_food/static/description/img/cards2.png
new file mode 100644
index 000000000..8d3f98314
Binary files /dev/null and b/theme_eco_food/static/description/img/cards2.png differ
diff --git a/theme_eco_food/static/description/img/check.svg b/theme_eco_food/static/description/img/check.svg
new file mode 100644
index 000000000..8bc79333d
--- /dev/null
+++ b/theme_eco_food/static/description/img/check.svg
@@ -0,0 +1,10 @@
+
diff --git a/theme_eco_food/static/description/img/choose.png b/theme_eco_food/static/description/img/choose.png
new file mode 100644
index 000000000..fdbf30741
Binary files /dev/null and b/theme_eco_food/static/description/img/choose.png differ
diff --git a/theme_eco_food/static/description/img/choose_snippet.png b/theme_eco_food/static/description/img/choose_snippet.png
new file mode 100644
index 000000000..ec272d22c
Binary files /dev/null and b/theme_eco_food/static/description/img/choose_snippet.png differ
diff --git a/theme_eco_food/static/description/img/contact-1.png b/theme_eco_food/static/description/img/contact-1.png
new file mode 100644
index 000000000..afe87953c
Binary files /dev/null and b/theme_eco_food/static/description/img/contact-1.png differ
diff --git a/theme_eco_food/static/description/img/contact-2.png b/theme_eco_food/static/description/img/contact-2.png
new file mode 100644
index 000000000..c596d1b67
Binary files /dev/null and b/theme_eco_food/static/description/img/contact-2.png differ
diff --git a/theme_eco_food/static/description/img/feature-star.svg b/theme_eco_food/static/description/img/feature-star.svg
new file mode 100644
index 000000000..a913270e8
--- /dev/null
+++ b/theme_eco_food/static/description/img/feature-star.svg
@@ -0,0 +1,13 @@
+
diff --git a/theme_eco_food/static/description/img/gear.svg b/theme_eco_food/static/description/img/gear.svg
new file mode 100644
index 000000000..ce383059d
--- /dev/null
+++ b/theme_eco_food/static/description/img/gear.svg
@@ -0,0 +1,10 @@
+
diff --git a/theme_eco_food/static/description/img/hire-odoo.svg b/theme_eco_food/static/description/img/hire-odoo.svg
new file mode 100644
index 000000000..9cfec4e44
--- /dev/null
+++ b/theme_eco_food/static/description/img/hire-odoo.svg
@@ -0,0 +1,12 @@
+
diff --git a/theme_eco_food/static/description/img/jazzy scrnsht/discuss.png b/theme_eco_food/static/description/img/jazzy scrnsht/discuss.png
new file mode 100644
index 000000000..13de707a2
Binary files /dev/null and b/theme_eco_food/static/description/img/jazzy scrnsht/discuss.png differ
diff --git a/theme_eco_food/static/description/img/jazzy scrnsht/error.png b/theme_eco_food/static/description/img/jazzy scrnsht/error.png
new file mode 100644
index 000000000..60a030396
Binary files /dev/null and b/theme_eco_food/static/description/img/jazzy scrnsht/error.png differ
diff --git a/theme_eco_food/static/description/img/jazzy scrnsht/form.png b/theme_eco_food/static/description/img/jazzy scrnsht/form.png
new file mode 100644
index 000000000..a622f6958
Binary files /dev/null and b/theme_eco_food/static/description/img/jazzy scrnsht/form.png differ
diff --git a/theme_eco_food/static/description/img/jazzy scrnsht/front.png b/theme_eco_food/static/description/img/jazzy scrnsht/front.png
new file mode 100644
index 000000000..ff91f0e0d
Binary files /dev/null and b/theme_eco_food/static/description/img/jazzy scrnsht/front.png differ
diff --git a/theme_eco_food/static/description/img/jazzy scrnsht/kanban.png b/theme_eco_food/static/description/img/jazzy scrnsht/kanban.png
new file mode 100644
index 000000000..1194ed90e
Binary files /dev/null and b/theme_eco_food/static/description/img/jazzy scrnsht/kanban.png differ
diff --git a/theme_eco_food/static/description/img/jazzy scrnsht/list.png b/theme_eco_food/static/description/img/jazzy scrnsht/list.png
new file mode 100644
index 000000000..82110bda7
Binary files /dev/null and b/theme_eco_food/static/description/img/jazzy scrnsht/list.png differ
diff --git a/theme_eco_food/static/description/img/jazzy scrnsht/products.png b/theme_eco_food/static/description/img/jazzy scrnsht/products.png
new file mode 100644
index 000000000..b0542d49e
Binary files /dev/null and b/theme_eco_food/static/description/img/jazzy scrnsht/products.png differ
diff --git a/theme_eco_food/static/description/img/jazzy scrnsht/search.png b/theme_eco_food/static/description/img/jazzy scrnsht/search.png
new file mode 100644
index 000000000..5f177a556
Binary files /dev/null and b/theme_eco_food/static/description/img/jazzy scrnsht/search.png differ
diff --git a/theme_eco_food/static/description/img/jazzy scrnsht/settings.png b/theme_eco_food/static/description/img/jazzy scrnsht/settings.png
new file mode 100644
index 000000000..1cc71c3a0
Binary files /dev/null and b/theme_eco_food/static/description/img/jazzy scrnsht/settings.png differ
diff --git a/theme_eco_food/static/description/img/life-ring-icon.svg b/theme_eco_food/static/description/img/life-ring-icon.svg
new file mode 100644
index 000000000..b6c797ba1
--- /dev/null
+++ b/theme_eco_food/static/description/img/life-ring-icon.svg
@@ -0,0 +1,13 @@
+
diff --git a/theme_eco_food/static/description/img/odoo-consultancy.svg b/theme_eco_food/static/description/img/odoo-consultancy.svg
new file mode 100644
index 000000000..c2c27e608
--- /dev/null
+++ b/theme_eco_food/static/description/img/odoo-consultancy.svg
@@ -0,0 +1,4 @@
+
diff --git a/theme_eco_food/static/description/img/odoo-licencing.svg b/theme_eco_food/static/description/img/odoo-licencing.svg
new file mode 100644
index 000000000..8a520b40f
--- /dev/null
+++ b/theme_eco_food/static/description/img/odoo-licencing.svg
@@ -0,0 +1,3 @@
+
diff --git a/theme_eco_food/static/description/img/patter.svg b/theme_eco_food/static/description/img/patter.svg
new file mode 100644
index 000000000..9b7b0d7cd
--- /dev/null
+++ b/theme_eco_food/static/description/img/patter.svg
@@ -0,0 +1,9 @@
+
diff --git a/theme_eco_food/static/description/img/portfolio-1.png b/theme_eco_food/static/description/img/portfolio-1.png
new file mode 100644
index 000000000..0098ee626
Binary files /dev/null and b/theme_eco_food/static/description/img/portfolio-1.png differ
diff --git a/theme_eco_food/static/description/img/portfolio-2.png b/theme_eco_food/static/description/img/portfolio-2.png
new file mode 100644
index 000000000..633f4002b
Binary files /dev/null and b/theme_eco_food/static/description/img/portfolio-2.png differ
diff --git a/theme_eco_food/static/description/img/puzzle-piece-icon.svg b/theme_eco_food/static/description/img/puzzle-piece-icon.svg
new file mode 100644
index 000000000..ab5e56fa7
--- /dev/null
+++ b/theme_eco_food/static/description/img/puzzle-piece-icon.svg
@@ -0,0 +1,10 @@
+
diff --git a/theme_eco_food/static/description/img/screenshot-3.png b/theme_eco_food/static/description/img/screenshot-3.png
new file mode 100644
index 000000000..be1acdfd5
Binary files /dev/null and b/theme_eco_food/static/description/img/screenshot-3.png differ
diff --git a/theme_eco_food/static/description/img/screenshot-4.png b/theme_eco_food/static/description/img/screenshot-4.png
new file mode 100644
index 000000000..1d01e11fc
Binary files /dev/null and b/theme_eco_food/static/description/img/screenshot-4.png differ
diff --git a/theme_eco_food/static/description/img/screenshot-img.png b/theme_eco_food/static/description/img/screenshot-img.png
new file mode 100644
index 000000000..a425d9ede
Binary files /dev/null and b/theme_eco_food/static/description/img/screenshot-img.png differ
diff --git a/theme_eco_food/static/description/img/screenshot-main.png b/theme_eco_food/static/description/img/screenshot-main.png
new file mode 100644
index 000000000..575f8e676
Binary files /dev/null and b/theme_eco_food/static/description/img/screenshot-main.png differ
diff --git a/theme_eco_food/static/description/img/services-1.png b/theme_eco_food/static/description/img/services-1.png
new file mode 100644
index 000000000..7f5335ca6
Binary files /dev/null and b/theme_eco_food/static/description/img/services-1.png differ
diff --git a/theme_eco_food/static/description/img/services-2.png b/theme_eco_food/static/description/img/services-2.png
new file mode 100644
index 000000000..93b4334a9
Binary files /dev/null and b/theme_eco_food/static/description/img/services-2.png differ
diff --git a/theme_eco_food/static/description/img/services-3.png b/theme_eco_food/static/description/img/services-3.png
new file mode 100644
index 000000000..a488cfcd9
Binary files /dev/null and b/theme_eco_food/static/description/img/services-3.png differ
diff --git a/theme_eco_food/static/description/img/services-4.png b/theme_eco_food/static/description/img/services-4.png
new file mode 100644
index 000000000..a488cfcd9
Binary files /dev/null and b/theme_eco_food/static/description/img/services-4.png differ
diff --git a/theme_eco_food/static/description/img/services-5.png b/theme_eco_food/static/description/img/services-5.png
new file mode 100644
index 000000000..78817e826
Binary files /dev/null and b/theme_eco_food/static/description/img/services-5.png differ
diff --git a/theme_eco_food/static/description/img/services-6.png b/theme_eco_food/static/description/img/services-6.png
new file mode 100644
index 000000000..6b794b513
Binary files /dev/null and b/theme_eco_food/static/description/img/services-6.png differ
diff --git a/theme_eco_food/static/description/img/services-7.png b/theme_eco_food/static/description/img/services-7.png
new file mode 100644
index 000000000..0eaa8d290
Binary files /dev/null and b/theme_eco_food/static/description/img/services-7.png differ
diff --git a/theme_eco_food/static/description/img/services.png b/theme_eco_food/static/description/img/services.png
new file mode 100644
index 000000000..0210e5ca3
Binary files /dev/null and b/theme_eco_food/static/description/img/services.png differ
diff --git a/theme_eco_food/static/description/img/team-1.png b/theme_eco_food/static/description/img/team-1.png
new file mode 100644
index 000000000..419345e0e
Binary files /dev/null and b/theme_eco_food/static/description/img/team-1.png differ
diff --git a/theme_eco_food/static/description/img/team-2.png b/theme_eco_food/static/description/img/team-2.png
new file mode 100644
index 000000000..5ba09d5fc
Binary files /dev/null and b/theme_eco_food/static/description/img/team-2.png differ
diff --git a/theme_eco_food/static/description/img/translate.svg b/theme_eco_food/static/description/img/translate.svg
new file mode 100644
index 000000000..eea729542
--- /dev/null
+++ b/theme_eco_food/static/description/img/translate.svg
@@ -0,0 +1,10 @@
+
diff --git a/theme_eco_food/static/description/img/v17-icon.png b/theme_eco_food/static/description/img/v17-icon.png
new file mode 100644
index 000000000..9132f6208
Binary files /dev/null and b/theme_eco_food/static/description/img/v17-icon.png differ
diff --git a/theme_eco_food/static/description/img/wrench-icon.svg b/theme_eco_food/static/description/img/wrench-icon.svg
new file mode 100644
index 000000000..4e0ce1d01
--- /dev/null
+++ b/theme_eco_food/static/description/img/wrench-icon.svg
@@ -0,0 +1,10 @@
+
diff --git a/theme_eco_food/static/description/index.html b/theme_eco_food/static/description/index.html
new file mode 100644
index 000000000..628e1c084
--- /dev/null
+++ b/theme_eco_food/static/description/index.html
@@ -0,0 +1,791 @@
+
+
+
+
+
+
+ app index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Supports:
+
+ Enterprise
+
+
+ Community
+
+
+
+
+
+ Availability:
+
+ Odoo Online
+
+
+ Odoo.sh
+
+
+ On Premise
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Our Features
+
+
info includes 300+ elements that you may need to create website without
+ external plugins.
+ Please make sure that you install all your apps prior to the installation of this theme.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Stunning Pages,
+ Seamless Experience
+
+
+
+
Eco Food Theme V18 is an Attractive Theme for Your Odoo 18.
+ This Theme Will Change Improve Your Experience With Odoo.
+ This is a Minimalist and Elegant Frontend Theme for Odoo 18 And Can Offer a
+ Perfect Choice for Your Odoo Frontend. .
+
+
Modified Structure for All Pages
+
New Style for Buttons
+
New Color Combination
+
New Look for All Pages
+
A Clean layout and New Font Style
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fully Responsive
+ Layout
+
+
+
+
Now take advantage of everything your dashboard has to offer even on the go. Our
+ design is now fully responsive, enabling you to view and manage everything comfortably.
+
+
Interactive Elements
+
Fast Loading Speed
+
Customizable Fonts and Colors
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Classy and Elegant
+ Shop Page Design
+
+
+
+
The Eco Food Theme V18 Gives You a Fully Modified Shop View.
+ The product card gives a Pleasant Experience And an Extraordinary Design
+ To Your Shop page Making The product cards Look Great. It will Give You a
+ Clean Layout with the New Outlook to your
+ product card with adding to cart,add to wishlist, rating, etc. in a new style. .
+
+
Modified Font
+
New Color Combination
+
Full-Screen View
+
Hover Effect
+
Clean Layout
+
New label at the top
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Classy
+ Presentation
+
+
+
+
Highlight your products with captivating visuals
+ and detailed descriptions that engage customers and boost sales.
+ A well-crafted product presentation builds trust
+ and enhances the shopping experience.
+
+
High-Quality Images
+
Engaging Descriptions
+
Interactive Features
+
+
+
+
+
+
+
+
+
+
+
+
+ Attractive Cart page
+
+
+
+
+
+
+
+
The new Eco Food Themes V17 Gives You a Fully
+ Modified Cart View, and This Table Design is Also Have
+ Awesome Design, and it Gives You More Beauty for Your Odoo Frontend.
+ It will Give You a Clean Layout with the New Color Combination and a Modified Font. .
+
+
Modified Table Style
+
New Color Combination
+
Shows discount percentage and discounted price
+
Buttons with New Colors
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Keep in touch
+ in new style
+
+
+
+
Eco Food Theme Gives You a Fully Modified Contact View with a
+ Full-Screen Experience. It will Give You a Clean Layout
+ with the New OutLook and a Modified Font. .