# Before we start tutorial

## Setup for tutorial

Depending on the preferences, we may choose tutorial version for

* [Symfony](https://symfony.com/)
* [Laravel](https://laravel.com/)
* [Lite (No extra framework)](/modules/ecotone-lite.md)

1. Use [git](https://git-scm.com) to download **starting point** in order to start tutorial

{% tabs %}
{% tab title="Symfony" %}

```bash
git clone git@github.com:ecotoneframework/symfony-tutorial.git
# Go to symfony-tutorial catalog
```

{% endtab %}

{% tab title="Laravel" %}

```bash
git clone git@github.com:ecotoneframework/laravel-tutorial.git
# Go to laravel-tutorial catalog

# Normally you will use "php artisan" for running console commands
# To reduce number of difference during the tutorial
# "artisan" is changed to "bin/console"
```

{% endtab %}

{% tab title="Lite" %}

```bash
git clone git@github.com:ecotoneframework/lite-tutorial.git
# Go to lite-tutorial catalog
```

{% endtab %}
{% endtabs %}

2\. Run command line application to verify if everything is ready.

{% hint style="success" %}
There are two options in which we run the tutorial:

* *Local Environment*
* *Docker (preferred)*
  {% endhint %}

{% tabs %}
{% tab title="Docker" %}

```php
/** Ecotone Quickstart ships with docker-compose with preinstalled PHP 8.0 */
1. Run "docker-compose up -d"
2. Enter container "docker exec -it ecotone-quickstart /bin/bash"
3. Run starting command "composer install"
4. Run starting command "bin/console ecotone:quickstart"
5. You should see:
"Running example...
Hello World
Good job, scenario ran with success!"
```

{% endtab %}

{% tab title="Local Environment" %}

```php
/** You need to have atleast PHP 8.0 and Composer installed */
1. Run "composer install" 
2. Run starting command "bin/console ecotone:quickstart"
3. You should see:
"Running example...
Hello World
Good job, scenario ran with success!"
```

{% endtab %}
{% endtabs %}

{% hint style="success" %}
If you can see "Hello World", then we are ready to go. Time for Lesson 1!
{% endhint %}

{% content-ref url="/pages/-LwJdfbjwW5TzsHUY492" %}
[Lesson 1: Messaging Concepts](/tutorial-php-ddd-cqrs-event-sourcing/php-messaging-architecture.md)
{% endcontent-ref %}


---

# 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.ecotone.tech/tutorial-php-ddd-cqrs-event-sourcing/before-we-start-tutorial.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.
