.. highlight:: kotlin .. raw:: html The CorDapp Template ==================== When writing a new CorDapp, you’ll generally want to start from one of the standard templates: * The `Java Cordapp Template `_ * The `Kotlin Cordapp Template `_ The Cordapp templates provide the boilerplate for developing a new CorDapp. CorDapps can be written in either Java or Kotlin. We will be providing the code in both languages throughout this tutorial. Note that there's no need to download and install Corda itself. The required libraries are automatically downloaded from an online Maven repository and cached locally. Downloading the template ------------------------ Open a terminal window in the directory where you want to download the CorDapp template, and run the following command: .. container:: codeset .. code-block:: java git clone https://github.com/corda/cordapp-template-java.git ; cd cordapp-template-java .. code-block:: kotlin git clone https://github.com/corda/cordapp-template-kotlin.git ; cd cordapp-template-kotlin Opening the template in IntelliJ -------------------------------- Once the template is download, open it in IntelliJ by following the instructions here: https://docs.corda.net/tutorial-cordapp.html#opening-the-example-cordapp-in-intellij. Template structure ------------------ For this tutorial, we will only be modifying the following files: .. container:: codeset .. code-block:: java // 1. The state cordapp-contracts-states/src/main/java/com/template/TemplateState.java // 2. The flow cordapp/src/main/java/com/template/Initiator.java .. code-block:: kotlin // 1. The state cordapp-contracts-states/src/main/kotlin/com/template/StatesAndContracts.kt // 2. The flow cordapp/src/main/kotlin/com/template/Flows.kt Progress so far --------------- We now have a template that we can build upon to define our IOU CorDapp. Let's start by defining the ``IOUState``.