Changing the homepage user interface to an HTML page


I want to change the design of the homepage to an external .html page with link to the login route of my erpnext installation.

if i already have the html page how do i link it to the erpnext install.


hi Oasis ,
you can make new app and change the www folder to overwite the base and web pages
this how i change the home page before login to frappe or erpnext

1 Like

Hi Ahmad,

After adding my webpage files into www of my app how do i point it to the index?


sorry Oasis i didn’t understand you,
but the answer to your question will reveal if you read base.html , and web.html
base it the parent for all the pages , web.html extends it … the blocks in jnja of blade for php … to organised your pages … read them you will be able to do whatever you want then :smiley:

I meant if i add my webfiles in www of the app how do i set them as index so that when i call my site they get launched first

this is the templates path

you can see both base.html and web. html
in base.html it contain header footer and there is a Block content tag and its empty .
and in web.html
they extends the Base.html and write the block content …
the first page loads is web.html … if you change it it will change in the website …(only content ) header and footer remain the same , if you want to change them you need to make change to base.html


if you make new app … you don’t have to make changes to frappe or erpnext …
just write what you need in www folder or template folder … and make it’s name web.html
and it will show up … also if you change the web.html content you can see your changes

1 Like

this is a foodline frappe app … i made for a friend of mine … it’s just a simple app …

you can see the www folder and what i made also you can dowload it and use it beside frappe …
you don’t need erpnext just foodline app and frappe and you can learn alot from it …


change the variable home_page in to your home page file name


Where are the images supposed to be stored so that when the app loads the webpage it retrieves them?

put everything under www as suggested by @ahmadRagheb Actually if you copy your all your website files (HTML, CSS, IMG) it will just work

1 Like

I did put the files in the same folder as the html page but they are still not accessible i think images… have to be stored in some directories like /public or something

Trying to follow your instruction.
I cloned the food line folder (actually linefeed)
I then tried to install the app in my existing respite but it says app not found.
I am definitely doing something wrong.

Can you advise me please?


1 Like

hi friend
sorry i didn’t update the repo for long time i just fixed this issue
you can pull the changes now it will work just fine i hope

1 Like

if there is any error tell me ready to help :slight_smile:

1 Like


Thanks so much for the support. I really appreciate your time.
will check. I would like to see how this works. Frappe looks awesome. Just time to learn it.

By the way, I am having an issue with customers wh sign to erpnext. They cannot place orders. It asks for address but it seems to report a permission issue. What could be going on?

Working on it now.

Thanks a lot.

@tiwiex welcome to frappe … you can start a new topic in the discuss and if you can describe it more clear with images and more details all member here will help you

1 Like

i just reinstalled. i must have missed a step. that installation was awefully buggy. Thank goodness i did another setup. You can help me by … sharing something a bit more comprehensive on writing codes and utilizing the framework;s API effectively.


Not sure this is a huge error but just trying it out. see installation log below.

➜ frappe@ip-172-31-32-164 ~/frappe-bench bench get-app foodline GitHub - ahmadRagheb/linefood app linefood
INFO:bench.utils:git clone GitHub - ahmadRagheb/linefood --depth 1 --origin upstream
Cloning into ‘linefood’…
remote: Counting objects: 112, done.
remote: Compressing objects: 100% (87/87), done.
remote: Total 112 (delta 25), reused 90 (delta 18), pack-reused 0
Receiving objects: 100% (112/112), 673.79 KiB | 0 bytes/s, done.
Resolving deltas: 100% (25/25), done.
Checking connectivity… done.
(‘installing’, u’foodline’) foodline
INFO:bench.utils:./env/bin/pip install -q -e ./apps/foodline --no-cache-dir
/home/frappe/frappe-bench/apps/frappe/frappe/ UserWarning: Source /home/frappe/frappe-bench/apps/frappe_io/frappe_io/docs does not exists.
warnings.warn(‘Source {source} does not exists.’.format(source = source))
/home/frappe/frappe-bench/apps/frappe/frappe/ UserWarning: Source /home/frappe/frappe-bench/apps/foundation/foundation/docs does not exists.
warnings.warn(‘Source {source} does not exists.’.format(source = source))
/home/frappe/frappe-bench/apps/frappe/frappe/ UserWarning: Source /home/frappe/frappe-bench/apps/poll/poll/public does not exists.
warnings.warn(‘Source {source} does not exists.’.format(source = source))
/home/frappe/frappe-bench/apps/frappe/frappe/ UserWarning: Source /home/frappe/frappe-bench/apps/foodline/foodline/public does not exists.
warnings.warn(‘Source {source} does not exists.’.format(source = source))
/home/frappe/frappe-bench/apps/frappe/frappe/ UserWarning: Source /home/frappe/frappe-bench/apps/foodline/foodline/docs does not exists.
warnings.warn(‘Source {source} does not exists.’.format(source = source))
SyntaxError: Unexpected end of JSON input
at JSON.parse ()
at make_build_map (/home/frappe/frappe-bench/apps/frappe/frappe/build.js:193:22)
at Object. (/home/frappe/frappe-bench/apps/frappe/frappe/build.js:22:17)
at Module._compile (module.js:652:30)
at Object.Module._extensions…js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Function.Module.runMain (module.js:693:10)
at startup (bootstrap_node.js:191:16)
Wrote css/frappe-web.css - 65.11 KB
Wrote js/frappe-web.min.js - 132.75 KB
Wrote js/control.min.js - 77.04 KB
Wrote js/dialog.min.js - 116.9 KB
Wrote css/desk.min.css - 309.04 KB
Wrote css/frappe-rtl.css - 32.49 KB
Wrote js/libs.min.js - 1.13 MB
Wrote js/desk.min.js - 462.49 KB
Wrote css/module.min.css - 2.08 KB
Wrote css/form.min.css - 4.47 KB
Wrote js/form.min.js - 196.67 KB
Wrote css/list.min.css - 13.35 KB
Wrote js/list.min.js - 154.71 KB
Wrote css/report.min.css - 7.89 KB
Wrote js/report.min.js - 260.26 KB
Wrote js/web_form.min.js - 247.55 KB
Wrote css/web_form.css - 24.42 KB
Wrote js/print_format_v3.min.js - 23.39 KB
Wrote frappe_io/js/docs.js - 1.62 KB
Wrote css/erpnext.css - 8 KB
Wrote js/erpnext-web.min.js - 3.8 KB
Wrote js/erpnext.min.js - 166.05 KB
Wrote js/item-dashboard.min.js - 8.13 KB
INFO:bench.utils:sudo supervisorctl restart frappe-bench-workers: frappe-bench-web:
frappe-bench-workers:frappe-bench-frappe-schedule: stopped
frappe-bench-workers:frappe-bench-frappe-short-worker-0: stopped
frappe-bench-workers:frappe-bench-frappe-default-worker-0: stopped
frappe-bench-workers:frappe-bench-frappe-long-worker-0: stopped
frappe-bench-web:frappe-bench-node-socketio: stopped
frappe-bench-web:frappe-bench-frappe-web: stopped
frappe-bench-workers:frappe-bench-frappe-schedule: started
frappe-bench-workers:frappe-bench-frappe-default-worker-0: started
frappe-bench-workers:frappe-bench-frappe-long-worker-0: started
frappe-bench-workers:frappe-bench-frappe-short-worker-0: started
frappe-bench-web:frappe-bench-frappe-web: started
frappe-bench-web:frappe-bench-node-socketio: started

Yes, there are errors on the home page now. At least i am sure foodline is doing something. lol.
Traceback (most recent call last):
File “/home/frappe/frappe-bench/apps/frappe/frappe/website/”, line 39, in render
data = render_page_by_language(path)
File “/home/frappe/frappe-bench/apps/frappe/frappe/website/”, line 133, in render_page_by_language
return render_page(path)
File “/home/frappe/frappe-bench/apps/frappe/frappe/website/”, line 149, in render_page
return build(path)
File “/home/frappe/frappe-bench/apps/frappe/frappe/website/”, line 156, in build
return build_page(path)
File “/home/frappe/frappe-bench/apps/frappe/frappe/website/”, line 175, in build_page
html = frappe.render_template(context.source, context)
File “/home/frappe/frappe-bench/apps/frappe/frappe/utils/”, line 69, in render_template
return get_jenv().from_string(template).render(context)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/jinja2/”, line 1008, in render
return self.environment.handle_exception(exc_info, True)
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/jinja2/”, line 780, in handle_exception
reraise(exc_type, exc_value, tb)
File “”, line 1, in top-level template code
File “/home/frappe/frappe-bench/apps/foodline/foodline/./www/parent.html”, line 54, in top-level template code
{% block product %}{% endblock %}
File “”, line 185, in block “product”
File “/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/jinja2/”, line 411, in getitem
return obj[argument]
UndefinedError: tuple object has no element 0