Try ERPNext Buy Support Partners Foundation

Frappe Documentation Generator


Just built an engine automatically generate docs for your app into a static website that can be hosted on GitHub Pages.

Created the site for Frappe. This includes the current dev reference + tutorial + kb


Next step -> App Store!


@rmehta Very cooooool!!
I’am waiting… :ok_hand:

+1 for App Store, ERPNext really need this.

:slight_smile: wow good work

Here is how to create your docs

The Doc Generator a very cool ! So much more info has been added too. Excellent Stuff.

@rmehta the instructions says that only Frappe version 6.7 and onwards includes a full-blown documentation generator… should i wait for frappe version 6.7?

I try to generate and all run well but when i run bench --site [site] build-docs [appname] current /home/docs/reponame, of course i adapted to my case, but i get this error:

File "/Users/saguas/erpnext4/erpnext/frappe_v5/frappe-bench/apps/frappe/frappe/website/", line 186, in get_children     
if extn and os.path.basename(d.template_path).split(".")[0] != "index":
      File "/Users/saguas/erpnext4/erpnext/frappe_v5/frappe-bench/env/lib/python2.7/", line 114, in basename
        i = p.rfind('/') + 1
    AttributeError: 'NoneType' object has no attribute 'find'

Hi frappe team.

After frappe 6.7.0 release i still get the same error when i try to generate docs with build_docs.

Any solution?


@luisfmfernandes fixed in latest develop, sorry please check and let me know if this comes again.

Hi @rmehta.
I still get the same error after update to frappe version 6.7.7.

Can you delete all custom web pages and build the docs again?

@luisfmfernandes just added in the latest commit. Try again.

Hi @rmehta, must better but… i get another error:

 File "/Users/saguas/erpnext4/erpnext/frappe_v5/frappe-bench/apps/frappe/frappe/utils/", line 394, in copy_assets
    css_file.write(text.replace("/assets/frappe/", self.docs_base_url + '/assets/'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 916: ordinal not in range(128)

Remove unicode_literals from


Ok @rmehta, know it works.


Post your docs when ready :smile:

It is for jasper_erpnext_report but it will take a while. I want to finish first what iam doing now!
But will come eventually! :memo:

I get this error while I run this command

bench --site build-docs meeting current $PWD/docs/frappe-meetingapp

Usage: bench  build-docs [OPTIONS] APP

Error: Got unexpected extra arguments (current /home/taghreed/frappe-bench/docs/frappe-meetingapp)

After search I changed the command into
bench --site build-docs meeting --target $PWD/docs/frappe-meetingapp

then I got this error

Traceback (most recent call last):
  File "/usr/lib/python2.7/", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/", line 72, in _run_code
    exec code in run_globals
  File "/home/taghreed/frappe-bench/apps/frappe/frappe/utils/", line 94, in <module>
  File "/home/taghreed/frappe-bench/apps/frappe/frappe/utils/", line 18, in main
  File "/home/taghreed/frappe-bench/env/local/lib/python2.7/site-packages/click/", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/taghreed/frappe-bench/env/local/lib/python2.7/site-packages/click/", line 697, in main
    rv = self.invoke(ctx)
  File "/home/taghreed/frappe-bench/env/local/lib/python2.7/site-packages/click/", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/taghreed/frappe-bench/env/local/lib/python2.7/site-packages/click/", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/taghreed/frappe-bench/env/local/lib/python2.7/site-packages/click/", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/taghreed/frappe-bench/env/local/lib/python2.7/site-packages/click/", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/taghreed/frappe-bench/env/local/lib/python2.7/site-packages/click/", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/taghreed/frappe-bench/apps/frappe/frappe/commands/", line 24, in _func
    ret = f(frappe._dict(ctx.obj), *args, **kwargs)
  File "/home/taghreed/frappe-bench/apps/frappe/frappe/commands/", line 20, in build_docs
    _build_docs_once(site, app, docs_version, target, local)
  File "/home/taghreed/frappe-bench/apps/frappe/frappe/commands/", line 48, in _build_docs_once
  File "/home/taghreed/frappe-bench/apps/frappe/frappe/utils/", line 52, in build
    self.docs_path = frappe.get_app_path(self.target_app, 'www', "docs")
  File "/home/taghreed/frappe-bench/apps/frappe/frappe/", line 727, in get_app_path
    return get_pymodule_path(app_name, *joins)
  File "/home/taghreed/frappe-bench/apps/frappe/frappe/", line 742, in get_pymodule_path
    return os.path.join(os.path.dirname(get_module(scrub(modulename)).__file__), *joins)
  File "/home/taghreed/frappe-bench/apps/frappe/frappe/", line 704, in get_module
    return importlib.import_module(modulename)
  File "/usr/lib/python2.7/importlib/", line 37, in import_module
ImportError: Import by filename is not supported.

Hi @rmehta,

Is it me or has this been removed ?

The bench command build-docs does not exist anymore in Frappe 12 and develop but I did not see anything in the documentation mentioning its removal. Did I miss something ?

Is there any replacement to build a documentation for the app ?