# Documentation/docstrings on a dash proyect

**URL:** <https://community.plotly.com/t/documentation-docstrings-on-a-dash-proyect/32479>\
**Category:** Dash Python\
**Created:** [December 11, 2019, 11:50pm UTC](https://community.plotly.com/t/documentation-docstrings-on-a-dash-proyect/32479 "2019-12-11T23:50:01Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![pradel](https://sea2.discourse-cdn.com/flex024/user_avatar/community.plotly.com/pradel/32/8805_2.png) [@pradel](https://community.plotly.com/u/pradel)\
**Post date:** [December 11, 2019, 11:50pm UTC](https://community.plotly.com/t/documentation-docstrings-on-a-dash-proyect/32479/1 "2019-12-11T23:50:01Z")

</div>

How do you do your documentation on your dash project? Do you use docstrings? sphinx? google style guidelines?  
I am looking for some examples on how to do that. The apps that are on the dash app gallery are documented in a simple way and I don’t know if this is a good practice or if it’s required to do something more sophisticated.

I understand that finally the documentation depends on the developer and the requirements, but I am only looking for guidance and best practices.

Thank you!

---

<div class="post-metadata">

**Author:** ![Emmanuelle](https://sea2.discourse-cdn.com/flex024/user_avatar/community.plotly.com/emmanuelle/32/7853_2.png) [@Emmanuelle](https://community.plotly.com/u/Emmanuelle)\
**Post date:** [December 12, 2019, 3:07am UTC](https://community.plotly.com/t/documentation-docstrings-on-a-dash-proyect/32479/2 "2019-12-12T03:07:17Z")

</div>

Hi @pradel, the dash documentation [https://dash.plot.ly/](https://dash.plot.ly/) is a very big multipage Dash app. You can find its source code on [https://github.com/plotly/dash-docs](https://github.com/plotly/dash-docs) (the documentation pages are in the `dash_docs/tutorial` directory). The big advantage of this solution is that your doc is reactive and interactive since it’s a Dash app, therefore you can demonstrate the parameters of the different components and how they interact together. However, you have to host your documentation (heroku is a free solution for this), since you need flask to run your application, so you cannot just dump a set of html pages somewhere (Github pages for example) as for a static doc.

About docstrings, for documenting the API we use indeed docstrings which are parsed and formatted (see [https://github.com/plotly/dash-docs/blob/master/dash\_docs/tutorial/utils/convert\_props\_to\_list.py](https://github.com/plotly/dash-docs/blob/master/dash_docs/tutorial/utils/convert_props_to_list.py)).

Sphinx is not used for the Dash documentation, but it is used for documenting the API of the plotly.py library [https://plot.ly/python-api-reference/](https://plot.ly/python-api-reference/).

For the Dash apps of the gallery, you may have noticed that there is often a `dcc.Tab` with documentation (and other tabs for the interaction with data), it’s a useful trick to have enough space for the documentation without cluttering the dashboard with a lot of information. Also, `dcc.Markdown` is a convenient way to write well-formatted text such as documentation.

I’m sure other users will have other tips and tricks to share !

---

<div class="post-metadata">

**Author:** ![pradel](https://sea2.discourse-cdn.com/flex024/user_avatar/community.plotly.com/pradel/32/8805_2.png) [@pradel](https://community.plotly.com/u/pradel)\
**Post date:** [December 13, 2019, 6:07pm UTC](https://community.plotly.com/t/documentation-docstrings-on-a-dash-proyect/32479/3 "2019-12-13T18:07:47Z")

</div>

It’s very cool that the dash documentation is itself a dash app 🙂  
Thanks for the suggestions, I’ll look what’s best for my project.
