diff --git a/docs/admin/01_core_concepts.rst b/docs/admin/01_core_concepts.rst
index fdb9beeb7f3f29b19dbb8f6b38411b9ce97835a8..680ee618367334efff3cde1befcf082d9fdeb8f2 100644
--- a/docs/admin/01_core_concepts.rst
+++ b/docs/admin/01_core_concepts.rst
@@ -1,5 +1,5 @@
-The AlekSIS core
-================
+Concepts of the AlekSIS core
+============================
 
 The AlekSIS core provides functionality and data models as a base for
 all apps.
@@ -52,13 +52,13 @@ information like the following:
 -  Primary group (e. g. a class or a tutor group, cf. [@sec:Groups])
 
 Except for the name, all data points are optional, so you can decide on
-your own (and on your local data protection laws) which data should be
+your own (and based on your local data protection laws) which data should be
 included in AlekSIS.
 
 There are two important things you should know about persons:
 
 -  **Persons are not automatically users:** That means that persons can
-   be linked to an user account including things like a password and the
+   be linked to a user account including things like a password and the
    ability to login, but they don’t have to be. For example, your
    AlekSIS instance could save the data about parents, but you don’t
    want them to login: In this scenario, the guardians are available as
@@ -111,5 +111,5 @@ Import school terms, persons and groups from other data sources
 ---------------------------------------------------------------
 
 When AlekSIS is not your single date source, all these data can be
-imported from other sources. You can find further information in
-[@sec:Integrations].
+imported from other sources. You can find further information in the
+respective integration apps.
diff --git a/docs/admin/03_ldap.rst b/docs/admin/03_ldap.rst
index b8fbd657dedc3d3e7a6ef04a7fa36d9b7f1b66bf..795c9d5e1e1cba76dde168f9778bd12ec9178563 100644
--- a/docs/admin/03_ldap.rst
+++ b/docs/admin/03_ldap.rst
@@ -20,7 +20,7 @@ very straightforward under all circumstances. On Debian, install these packages:
 Configuration of LDAP support
 -----------------------------
 
-Configuration is done under the ``default.ldap`` section in AlekSIS’
+Configuration is done under the ``ldap`` section in AlekSIS’
 configuration file. For example, add something like the following to your
 configuration (normally in ``/etc/aleksis``; you can either append to an
 existing file or add a new one)::
diff --git a/docs/admin/05_monitoring.rst b/docs/admin/05_monitoring.rst
index 5c0cf5fe05f39f633ede5a9dbf94350cc959d616..1847297352a135aafdff954d98eb2a2cc1a69573 100644
--- a/docs/admin/05_monitoring.rst
+++ b/docs/admin/05_monitoring.rst
@@ -27,10 +27,10 @@ Thresholds for health checks can be configured via config file
 Status page
 -----------
 
-AlekSIS status page show information about the health of your AlekSIS
+AlekSIS' status page shows information about the health of your AlekSIS
 instance. You can visit it via the left navigation bar (Admin → Status).
 
-The page show information about debug and maintenance mode, a summary of
+The page shows information about debug and maintenance mode, a summary of
 your health checks and the last exit status of your celery tasks. This
 page can not be used as a health check, it will always return HTTP 200
 if the site is reachable.
@@ -65,13 +65,10 @@ Performance monitoring with Prometheus
 --------------------------------------
 
 AlekSIS provides a Prometheus exporter. The exporter provides metrics
-about responses and requests, e.g. s about response codes, request
-latency and requests per view. It al provides data about database
+about responses and requests, e.g. about response codes, request
+latency and requests per view. It also provides data about database
 operations.
 
-Metrics endpoint
-~~~~~~~~~~~~~~~~
-
 The metrics endpoint can be found at
 https://aleksis.example.com/metrics. In the default configuration it can
 be scraped from everywhere. You might want to add some webserver
@@ -84,7 +81,7 @@ To get metrics of your AlekSIS instance, just add the following to
 
      - job_name: aleksis
        static_configs:
-         - targets: ['my.aleksis-instance.com']
+         - targets: ['aleksis.example.com']
        metrics_path: /metrics
 
 Rules for prometheus alertmanager
@@ -110,7 +107,7 @@ is slow or something.
 Grafana dashboard
 ~~~~~~~~~~~~~~~~~
 
-There is a Grafana dashboard available to visualize the metrics.
+There is a Grafana dashboard available to visualise the metrics.
 
 The dashboard is available at
 https://grafana.com/grafana/dashboards/9528.
diff --git a/docs/admin/06_configuration_options.rst b/docs/admin/06_configuration_options.rst
index 19321db371728406086e35e3a4d7dd1e6979f367..d87d2a3c6a7054ae847684019817f74a1324bab5 100644
--- a/docs/admin/06_configuration_options.rst
+++ b/docs/admin/06_configuration_options.rst
@@ -63,6 +63,6 @@ Example configuration file::
 Configuration in frontend
 -------------------------
 
-Everything that must not be configured before the AlekSIS instance fully starts can be configured in frontend, such as site title and logo.
+Everything that does not have to be configured before the AlekSIS instance fully starts can be configured in frontend, such as site title and logo.
 
 You can find the configuration options in your AlekSIS instance under ``Admin → Configuration``.
diff --git a/docs/admin/06_storage.rst b/docs/admin/06_storage.rst
index b9b67e698c158ef6ea0b3ad2819ccd753ff9aea0..4466e30a675551b077b99f6ce3b7caefaf908db2 100644
--- a/docs/admin/06_storage.rst
+++ b/docs/admin/06_storage.rst
@@ -1,15 +1,15 @@
 Storage
-##########
+=======
 
-Amazon S3
-*********
+Amazon S3 (or other S#-compatible storage)
+------------------------------------------
 
 AlekSIS allows you to configure an Amazon S3 endpoint for static and media
 files. This is useful e.g. for loadbalancing with multiple AlekSIS
 instances.
 
 Configure an S3 endpoint
-=======================
+~~~~~~~~~~~~~~~~~~~~~~~~
 
 If you want to use an S3 endpoint to store files you have to configure the
 endpoint in your configuration file (`/etc/aleksis/aleksis.toml`)::
diff --git a/docs/appendix/00_index.rst b/docs/appendix/00_index.rst
index 01d712dbaa702f6f9a817636dbced4ded7c0a9be..102354b28bec436f6318a401e82e01009f9fb0bd 100644
--- a/docs/appendix/00_index.rst
+++ b/docs/appendix/00_index.rst
@@ -1,5 +1,5 @@
-
-================================
+Appendix
+========
 
 .. toctree::
    :glob:
diff --git a/docs/dev/00_index.rst b/docs/dev/00_index.rst
index 02a5cc03c73ee203e3c77c29866135c091fb3162..5278cebd462519b49624b87ae15b7ebe031dbea0 100644
--- a/docs/dev/00_index.rst
+++ b/docs/dev/00_index.rst
@@ -1,5 +1,5 @@
-Development
-===========
+Development of AlekSIS apps
+===========================
 
 .. toctree::
    :glob:
diff --git a/docs/dev/03_run_tests.rst b/docs/dev/03_run_tests.rst
index ae38192ed8fb8fdaae51046839269cac1ef61af4..c50eda52d1c04d183c518a938a6f6a7a1c579ab3 100644
--- a/docs/dev/03_run_tests.rst
+++ b/docs/dev/03_run_tests.rst
@@ -6,8 +6,7 @@ Running default test suite
 
 The test suite can be run using the `tox` tool::
 
-  poetry run tox
-
+  tox
 
 Enabling Selenium browser tests
 -------------------------------
@@ -32,7 +31,7 @@ Selenium tests are enabled if `TEST_SELENIUM_BROWSERS` is non-empty.
 
 To set variables, use env to wrap the tox ommand::
 
-  poetry run env TEST_SELENIUM_BROWSERS=chrome,firefox tox
+  TEST_SELENIUM_BROWSERS=chrome,firefox tox
 
 
 Using a Selenium hub on local Docker host
@@ -50,10 +49,9 @@ First, get Selenium Hub and one or more browser nodes up and running::
 After that, you can run the test suite, setting the needed variables to use
 Docker Hub::
 
-  poetry run env \
-    TEST_SELENIUM_BROWSERS=chrome,firefox \
-    TEST_SELENIUM_HUB=http://127.0.0.1:4444/wd/hub \
-    TEST_HOST=172.17.0.1 \
+  TEST_SELENIUM_BROWSERS=chrome,firefox \
+  TEST_SELENIUM_HUB=http://127.0.0.1:4444/wd/hub \
+  TEST_HOST=172.17.0.1 \
   tox
 
 The `TEST_HOST` variable is set to the Docker host's IP address, where the
diff --git a/docs/dev/04_materialize_templates.rst b/docs/dev/04_materialize_templates.rst
index 882604168d04ae6fd6085626305844a8648405e7..b997c32f293e6268a2deae5b69001abaf9a84e10 100644
--- a/docs/dev/04_materialize_templates.rst
+++ b/docs/dev/04_materialize_templates.rst
@@ -1,9 +1,9 @@
 Materialize templates
 ======================
 
-AlekSIS frontend uses the `MaterializeCSS`_ framework and the `django-material`_ library.
+The AlekSIS frontend uses the `MaterializeCSS`_ framework and the `django-material`_ library.
 
-Internationalization
+Internationalisation
 --------------------
 
 Load the ``i18n`` template tag and start translating strings in templates with
diff --git a/docs/dev/06_merging_app_settings.rst b/docs/dev/06_merging_app_settings.rst
index 5c8bc1f65cced9153946bf36fbd005740e5fabb7..3e12ab95063e002326743afb733b360c094c7d9c 100644
--- a/docs/dev/06_merging_app_settings.rst
+++ b/docs/dev/06_merging_app_settings.rst
@@ -25,5 +25,5 @@ the following into your ``settings.py``::
         }
 
 If you install new apps and want to configure these, or need some other settings you can easily add
-settings to your ``settings.py``.  Only settings that does not exist in the
+settings to your ``settings.py``.  Only settings that do not exist in the
 main ``settings.py`` will be respected.
diff --git a/docs/preamble/00_index.rst b/docs/preamble/00_index.rst
index 01d712dbaa702f6f9a817636dbced4ded7c0a9be..a8f64c51e90901625bec3dcb3e2da196e76b1d49 100644
--- a/docs/preamble/00_index.rst
+++ b/docs/preamble/00_index.rst
@@ -1,5 +1,5 @@
-
-================================
+Preamble
+========
 
 .. toctree::
    :glob:
diff --git a/docs/preamble/01_introduction.rst b/docs/preamble/01_introduction.rst
index f37aa7ab445339f5768e950b4844c55db82e210c..0dcd9567b062189740dbf307d1b3459a0ac243d1 100644
--- a/docs/preamble/01_introduction.rst
+++ b/docs/preamble/01_introduction.rst
@@ -15,7 +15,7 @@ basis.
 On School Information Systems
 -----------------------------
 
-School Information System, or for short, SIS, are software suites that
+School Information Systems, or for short, SIS, are software suites that
 help educational organisations with managing personal information about
 all members (e.g. students, teachers, parents and guardians) as well as
 organisational data like plans, pedagogic track records, and much more.
diff --git a/docs/user/00_index.rst b/docs/user/00_index.rst
index 01d712dbaa702f6f9a817636dbced4ded7c0a9be..e2022ae158b76d881f03563b725edf6c2ec3ae80 100644
--- a/docs/user/00_index.rst
+++ b/docs/user/00_index.rst
@@ -1,5 +1,5 @@
-
-================================
+End-user documentation
+======================
 
 .. toctree::
    :glob:
diff --git a/docs/user/01_personal_account.rst b/docs/user/01_personal_account.rst
index 47b7aec11e1fd16e95511124dfd01d7dbfbc5c9d..da1c435fa7a77302343cf693cd40bf0886d04385 100644
--- a/docs/user/01_personal_account.rst
+++ b/docs/user/01_personal_account.rst
@@ -1,5 +1,5 @@
 Managing your personal account
-------------------------------
+==============================
 
 Each logged in user has several options to provided through the AlekSIS
 core. Which of these items are display depends on whether the user has a
@@ -8,7 +8,7 @@ person and what your system administrator has configured.
 .. _sec:Notifications:
 
 Notifications
-~~~~~~~~~~~~~
+-------------
 
 The AlekSIS core has a built-in notification system which can be used by
 apps to send urgent information to specific persons (e. g. timetable
@@ -19,7 +19,7 @@ channels. These channels can be switched on or off in your personal
 preferences (cf. [@sec:PersonalPreferences]).
 
 Setup two-factor authentication
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+-------------------------------
 
 
 .. image:: ../_static/2fa.png
@@ -43,7 +43,7 @@ To disable two factor authentication, login to your account and navigate to
 `Account → 2FA`, then press the big red button to disable 2fa.
 
 Change password
-~~~~~~~~~~~~~~~
+---------------
 
 If your system administrator has activated this function, you can change
 your password via ``Account → Change password``. If you forgot your
@@ -52,7 +52,7 @@ helps with resetting your password. The system then will send you a
 password reset link via email.
 
 Me page
-~~~~~~~
+-------
 
 Reachable under ``Account → Me``, this page shows the personal
 information saved about you in the system. If activated, you can upload
@@ -61,7 +61,7 @@ a picture of yourself or edit some information.
 .. _sec:PersonalPreferences:
 
 Personal preferences
-~~~~~~~~~~~~~~~~~~~~
+--------------------
 
 You can configure some behavior using the preferences under
 ``Account → Preferences``. By default, the Core only provides some
@@ -77,14 +77,14 @@ apps.
       sent notifications to you (cf. [@sec:Notifications]).
 
 Third-party accounts
-~~~~~~~~~~~~~~~~~~~~
+--------------------
 
 If you logged in using a third-party account (e. g. a Google or
 Microsoft account), you can manage the connections to these accounts on
 the page ``Account → Third-party accounts``.
 
 Authorized applications
-~~~~~~~~~~~~~~~~~~~~~~~
+-----------------------
 
 On the page ``Account → Authorized applications`` you can see all
 external applications you authorized to retreive data about you from