diff --git a/doc/doxygen/DoxygenDumuxLayout.xml b/doc/doxygen/DoxygenDumuxLayout.xml
index 40aa7c49317a5eccaeb190270b2836ce3d9d9e66..f11257461a58d5213430671e7727e11d4d3f7efb 100644
--- a/doc/doxygen/DoxygenDumuxLayout.xml
+++ b/doc/doxygen/DoxygenDumuxLayout.xml
@@ -22,6 +22,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
       <tab type="user" url="@ref runtime-parameters" visible="yes" title="Runtime Parameters" intro=""/>
       <tab type="user" url="@ref running-in-parallel" visible="yes" title="Running in parallel" intro=""/>
       <tab type="user" url="@ref input-and-output-formats" visible="yes" title="Input and output formats" intro=""/>
+      <tab type="user" url="@ref directory-structure" visible="yes" title="Where to find things" intro=""/>
     </tab>
     <tab type="modules" visible="yes" title="Module documentation" intro=""/>
     <tab type="user" url="@ref flow-and-transport-in-porous-media" visible="yes" title="Flow and transport in porous media" intro=""/>
diff --git a/doc/doxygen/images/dumux_structure.mmd b/doc/doxygen/images/dumux_structure.mmd
new file mode 100644
index 0000000000000000000000000000000000000000..c654993b63a82927ef4ddfce8e34b48e377bc6df
--- /dev/null
+++ b/doc/doxygen/images/dumux_structure.mmd
@@ -0,0 +1,47 @@
+flowchart LR
+    dumux[dumux]
+    dumux --- adaptive(adaptive) ---- adaptivedescr{{"Data transfer on new grid adapation indicators."}}
+    dumux --- assemply(assembly) ---- assemblydescr{{"Matrix assembler and residual for all discretization methods."}}
+    dumux --- common(common) ---- commondescr{{"Common files of all models:
+                                        definition of boundary conditions,
+                                        time stepping, splines,
+                                        dimensionless numbers..."}}
+        common --- properties([properties]) --- propertiesdescr{{"Base properties for all models."}}
+        common --- typetraits([typetraits]) --- typetraitsdescr{{"Helper classes to query type information on compile time."}}
+    dumux --- discretization(discretization) ---- discretizationdescr{{"Common methods of all discretizations (box, cell-centered TPFA/MPFA, staggered grid):
+                                                                 varible caching, advective and diffusive fluxes..."}}
+    dumux --- experimental(experimental) ---- experimentaldesc{{"Collection of experimental features."}}
+    dumux --- flux(flux) ---- fluxdescr{{"Collection of classes used to calculate advective and diffusive fluxes."}}
+    dumux --- freeflow(freeflow) --- freeflowmodels([models]) --- freeflowdescr{{"Single-phase free flow models using Navier-Stokes
+                                                                         and eddy viscosity bases Reynolds-averaged
+                                                                         Navier-Stokes turbulence models and shallow water equation model."}}
+    dumux --- geomechanics(geomechanics) --- geomechanicsmodels([models]) --- geomechanicsdescr{{"Elastic and poro-elastic models."}}
+    dumux --- geometry(geometry) ---- geometrydescr{{"Geometrical algorithms."}}
+    dumux --- io(io) ---- iodescr{{"Additional in-/output possibilites like reastart files,
+                                gnuplot-interface, VTK-writer extensions and files for grid generations."}}
+    dumux --- linear(linear) ---- lineardescr{{"Linear solver backend."}}
+    dumux --- material(material) --- binarycoefficients([binarycoefficents]) --- binarycoefficentsdescr{{"Binary coefficients (like binary diffusion coefficients) and 
+                                                                                                            those needed for the constitutive relationships (e.g. Henry coefficient)."}}
+        material --- chemistry([chemistry]) --- chemistrydescr{{"Files needed to account for, e.g. electro-chemical processes as in a fuel cell."}}
+        material --- components([components]) --- componentsdescr{{"Properties of a pure chemical substance (e.g. water) or pseudo substance (e.g. air.)"}}
+        material --- constraintsolvers([constraintsolvers]) --- constrainsolversdescr{{"Constraint solvers to make sure
+                                                                                        that the resulting fluid state is consistent with a given set of thermodynamic equations."}}
+        material --- eos([eos]) --- eosdescr{{"Equations of state (eos) are auxiliary classes which provide relations between a
+                                        fluid phase’s temperature, pressure, composition and density."}}
+        material --- fluidmatrixinteractions([fluidmatrixinteractions]) --- fluidmatrixinteractionsdescr{{"Constitutive relationships (e.g. capillary pressures, relative permeabilities)."}}
+        material --- fluidstates([fluidstates]) --- fluidstatesdescr{{"Fluid states are responsible for caching the thermodynamic configuration of a
+                                                                fluid system at a given spatial and temporal position."}}
+        material --- fluidsystems([fluidsystems]) --- fluidsystemsdescr{{"Fluid systems express the thermodynamic relations between quantities."}}
+        material --- solidstates([solidstates]) --- solidstatesdescr{{"Solid states are responsible for caching the thermodynamic configuration of a
+                                                                    solid system at a given spatial and temporal position."}}
+        material --- solidsytems([solidsystems]) --- solidsystemsdescr{{"Solid systems express the thermodynamic properties of a solid."}}
+    dumux --- multidomain(multidomain) ---- multidomaindescr{{"Common infrastructure to couple multiple domains, models or physics."}}
+        multidomain --- embedded([embedded]) --- embeddeddescr{{"Embedding a lower-dimensional model into a higher-dimensional one."}}
+        multidomain --- facet([facet]) --- facetdescr{{"Mixed-dimensional coupling at facets."}}
+        multidomain --- boundary([boundary]) --- boundarydescr{{"Coupling at the domain boundaries."}}
+    dumux --- nonlinear(nonlinear) ---- nonlineardescr{{"Newton’s method."}}
+    dumux --- parallel(parllel) ---- paralleldescr{{"Helper files for parallel simulations."}}
+    dumux --- porenetwork(porenetwork) --- porenetworkmodels([models]) --- porenetworkdescr{{"Specific definition for porenetwork models."}}
+    dumux --- porousmediumflow(porousmediumflow) --- porousmediumflowmodels([models]) --- porousmediumflowdescr{{"Specific definition for porous medium flow simulations for all models: imple-
+                                                                                                                    mentation of equations, model specific properties and indices."}}
+    dumux --- pyton(python) ---- pythondescr{{"The DuMux Python interface package."}}
\ No newline at end of file
diff --git a/doc/doxygen/pages/directory-structure.md b/doc/doxygen/pages/directory-structure.md
new file mode 100644
index 0000000000000000000000000000000000000000..d0c97cdf3d145fc514acb0e367fef5a20a2559be
--- /dev/null
+++ b/doc/doxygen/pages/directory-structure.md
@@ -0,0 +1,12 @@
+# Directory Structure
+
+DuMux has the following folder structure, which is similar to other DUNE modules.
+
+* `bin`: binaries, e.g. used for the automatic testing, post-processing, installation
+* `cmake`: the configuration options for building DuMux
+* `doc`: files necessary for the Doxygen documentation and various logos
+* `dumux`: the main folder, containing the source files. See below for a visualized structure.
+* `examples`: well-documented examples of applying DuMux to typical physical problems. In the `README.md` files, the setup is explained, the used code is presented as well as documented and images resulting from the simulation are included. The `README.md` files are located directly in the subfolders of `examples` and can be displayed by web browsers.
+* `test`: tests for each numerical model and some functionality.The structure is equivalent to the `dumux` folder, the `references` folder contains solutions for the automatic testing. Each test program consist of a main file `main.cc`, the problem definition `*problem.hh` (specifying initial and boundary conditions), and an input file `params.input`. If necessary, spatially dependent parameters are defined in `*spatialparameters.hh`. For more detailed descriptions of the tests, please have a look at the [examples](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/tree/master/examples#open_file_folder-example-1-diffusion-equation).
+
+@mermaid{"./images/dumux_structure.mmd}
\ No newline at end of file