# Drupal 8 module development Develop your own Drupal modules. Learn fundamental concepts and major patterns of the Drupal 8 API. - [Lesson 1: Your first module](lesson-1.html) - [Lesson 2: Blocks and entities](lesson-2.html) - [Lesson 3: Caching, security, forms](lesson-3.html) - [Lesson 4: Configuration, services](lesson-4.html) - [Lesson 5: Theming, twig](lesson-5.html) - [Lesson 6: Custom plugin, config entity](lesson-6.html) - Other: [Preparation](#/1), [Exercises](#/3), [Example code](#/4) General information: [opendrupal.org](https://opendrupal.org/materials/drupal-module-development).
# Prepare as participant To learn Drupal module development, you need a local development environment with a working Drupal 8 installation. - You need a (localhost) development environment. - Create a Drupal site with the latest stable release of Drupal 8 and the Standard installation profile. - Download or clone the [repository of these course materials](https://github.com/OpenDrupal/opendrupal-drupal-module-development). Store it outside of the Drupal directory, e.g. your desktop. It contains exercises and example code. Next: [Prepare as trainer](#/2), [Exercises](#/3), [Example code](#/4)
# Prepare as trainer These materials assume a workign development environment, and a working Drupal 8 installation. - Setup as described for the participant. - Make yourself familiar with the contents of the slides and the exercises If you find errors or have additions to the materials, we welcome your contribution in the form of a pull request. Next: [Exercises](#/3), [Example code](#/4)
# Exercises Each lesson contains exercises. The slides will point you to the right exercise. Download the repository, and look into the _lesson-1/exercises_ directory for the first exercises. Next: [Example code](#/4)
# Example code Examples of the completed exercises can be found in the _result_ directory of the repository. Depending on your preferred learning strategy, you can use this to compare your own exercise results with, to read and learn from, or to play with to find out how the code behaves. Back: [Lessons](#)
Fork me on GitHub