# Part 3: Getting Accustomed to the Code

To get a glimpse of the actual code that runs Empirica, open Visual Studio Code to the `prisoners-dilemma` folder.&#x20;

> You can either do this manually, by going to `File > Open Folder` and selecting the `prisoners-dilemma` folder, or by typing in your terminal `code .` within the `prisoners-dilemma` directory.

The template experiment includes three subdirectories:

1. `.empirica`  stores data and config files that we need to run the experiment.
2. `client`  is where the code that runs on your experiment participant's browser lives.
3. `server` is where all the code that runs on the server lives.

<figure><img src="/files/racqg4RTQP0O4RBKwJFQ" alt="" width="354"><figcaption><p>Collapsed File Tree</p></figcaption></figure>

The `client` and `server` directories are each structured as a node package, and contain some boilerplate code that we can ignore:

* `node_modules/` is a folder containing dependencies, and is managed for us (we never need to touch it)
* `dist/` is a folder for the compiled version of our code, which gets built automatically
* `package.json` and `package-lock.json` contain references to other packages that our experiment depends on
* `client/index.html`, `client/vite.config.js`, `client/uno.config.ts`, `client/jsconfig.json` `server/jsconfig.js` are all configuration files we can leave as they are

In this tutorial, we will make changes in the following places:

* `client/src/` is a folder containing the views the participant sees, built up as React components.
* `server/src/callbacks.js` is a file for server-side code that is called when specific actions happen in the game.
* `.empirica/local/tajriba.json` is where our experiment data is stored. It is often helpful to delete this file when you restart the server, to start with a clean slate.&#x20;

Have a quick browse through the files in `client/src/examples` to see how the jelly bean and minesweeper examples are implemented.


---

# 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.empirica.ly/tutorials/beginner-experiment-prisoners-dilemma/part-3-getting-accustomed-to-the-code.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.
