# Build a dApp

{% hint style="warning" %}
**Note:** Ensure that all fields and values adhere strictly to the protocol structure and specifications.
{% endhint %}

## Understand the structure of the `input.json` file

* Open the `input.json` file in a text editor.
* View or modify the [network details](/protocol-guide/build-a-dapp/network-configuration.md#network-metadata).
* In the network settings, fill in the [author details](/protocol-guide/build-a-dapp/network-configuration.md#author-details-and-countries) and specify the [supported countries](/protocol-guide/build-a-dapp/network-configuration.md#author-details-and-countries).
* Configure the [join network settings](/protocol-guide/build-a-dapp/network-configuration.md#join-network-settings) and set up [solve token usage](/protocol-guide/build-a-dapp/network-configuration.md#solve-token-settings).
* Define the [roles](/protocol-guide/build-a-dapp/roles-and-journeys.md#roles) and [journeys](/protocol-guide/build-a-dapp/roles-and-journeys.md#journeys).
* Declare the included [cards](/protocol-guide/build-a-dapp/card-definitions.md#cards), [events](/protocol-guide/build-a-dapp/events-and-event-handlers.md#events), and [event handlers](/protocol-guide/build-a-dapp/events-and-event-handlers.md#event-handlers).
* If necessary, include details about [tuumIO ledgers](/protocol-guide/build-a-dapp/tuumio-ledgers.md).
* Save and validate the `input.json` file.

## Define the data structure

* Create a [data definition file](/protocol-guide/build-a-dapp/tuumio-data-node.md#data-definition-file) based on how you want to organize data.
* Define the structure of the [transactional data](/protocol-guide/build-a-dapp/transactional-data.md).

## Create the definitions for cards&#x20;

* Define the [card structure](/protocol-guide/build-a-dapp/card-definitions.md#card-definition-structure), including [tiles](/protocol-guide/build-a-dapp/card-definitions/tiles.md) and [functions](/protocol-guide/build-a-dapp/card-definitions/functions.md).

## Create events and event handler definitions

* Configure the [events](/protocol-guide/build-a-dapp/events-and-event-handlers.md#events) and [event handlers](/protocol-guide/build-a-dapp/events-and-event-handlers.md#event-handlers).
* Configure [node event handlers](/protocol-guide/build-a-dapp/node-event-handlers.md).

## Configure Python event handlers

* Understand the predefined functions in the [Python template](/protocol-guide/build-a-dapp/python-event-handlers.md#python-event-handler-template).
* Perform the steps to configure an event based on the [use case example](/protocol-guide/build-a-dapp/python-event-handlers.md#use-case-example).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tuumio.com/protocol-guide/build-a-dapp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
