Repository: kestra-io/kestra
Issue: Update guided tour Flow
Labels: backend
enhancement

### Feature description

```yaml
# Flow declaration with a mandatory unique identifier, a namespace, and an optional description.
# Flow identifier are unique inside a namespace.
id: welcomeKestra
namespace: demo
description: Welcome to Kestra!

# Flow inputs: each input has a name, a type, and an optional default value.
inputs:
  # We define one input of name 'user' with a default value 'Data Engineer'
  - name: user
    type: STRING
    defaults: Kestra user

# List of tasks that will be executed one after the other.
# Each task must have an identifier unique for the flow and a type.
# Depending on the type of the task, you may have to pass additional attributes.
tasks:
  # This is one of the simplest task: it display a message in the log.
  # The message is passed thanks to the 'message' attribute.
  # We use the variable from the 'input' : {{ and }} are separator of a Pebble expression in which we can access variables.
  - id: hello
    type: io.kestra.core.tasks.log.Log
    message: Hey there, {{ inputs.user }}!

  # This is task run a bash command
  # Here we just 'echo' a message, using again the input variable
  - id: goodbye
    type: io.kestra.core.tasks.scripts.Bash
    commands: 
      - echo See you soon, {{ inputs.user }}!

# To trigger the Flow we use the 'triggers' property
triggers:

  # Here we use a special trigger type 'Schedule' to schedule the Flow every minute
  - id: everyMinute
    type: io.kestra.core.models.triggers.types.Schedule
    cron: "*/1 * * * *"
    inputs:
     name: Kestra master user
```

Issue comments:
Please provide the content that goes with + adds comments to the code.
Updated YAML content in main comment above.

Here are the different steps :

0. same as before
1. same as before
2. same as before
3. same as before
4. same as before
5.
**Logs some information**
First, let's start by adding a task that will log some information. This task will be executed when the flow is triggered and log "Hey there, Kestra user".

6.
**Run Bash command**
Sometimes, you want to run specific scripts, Python, Node, Bash, etc. Here we run a bash command to display a message.

7.
**Schedule**
To schedule a flow we add a 'trigger'. Here we schedule the Flow every minute.

8. same as before
9. same as before
10. same as before






Pull request review comments:

Patch that resolved the issue:
diff --git a/ui/src/components/onboarding/VueTour.vue b/ui/src/components/onboarding/VueTour.vue
index 5bdaa45d4f..6610cc0f93 100644
--- a/ui/src/components/onboarding/VueTour.vue
+++ b/ui/src/components/onboarding/VueTour.vue
@@ -301,51 +301,39 @@
                 flowParts: [
                     "# " + this.$t("onboarding-flow.onboardComment1") + "\n" +
                         "# " + this.$t("onboarding-flow.onboardComment2") + "\n" +
-                        "id: kestra-tour\n" +
+                        "id: welcomeKestra" + "\n" +
                         "namespace: io.kestra.tour\n" +
-                        "description: Kestra guided tour",
+                        "description: Welcome to Kestra!" + "\n",
                     "# " + this.$t("onboarding-flow.inputs") + "\n" +
-                        "inputs:\n" +
+                        "inputs:" + "\n" +
                         "  # " + this.$t("onboarding-flow.inputsDetails1") + "\n" +
-                        "  # " + this.$t("onboarding-flow.inputsDetails2") + "\n" +
-                        "  - name: csvUrl\n" +
-                        "    type: STRING\n" +
-                        "    defaults: https://gist.githubusercontent.com/tchiotludo/2b7f28f4f507074e60150aedb028e074/raw/6b6348c4f912e79e3ffccaf944fd019bf51cba30/conso-elec-gaz-annuelle-par-naf-agregee-region.csv",
+                        "- name: user" + "\n" +
+                        "  type: STRING" + "\n" +
+                        "  defaults: Kestra user" + "\n",
                     "# " + this.$t("onboarding-flow.tasks1") + "\n" +
                         "# " + this.$t("onboarding-flow.tasks2") + "\n" +
                         "# " + this.$t("onboarding-flow.tasks3") + "\n" +
                         "tasks:",
                     "  # " + this.$t("onboarding-flow.taskLog1") + "\n" +
                         "  # " + this.$t("onboarding-flow.taskLog2") + "\n" +
-                        "  - id: log\n" +
-                        "    type: io.kestra.core.tasks.log.Log\n" +
-                        "    message: The flow starts",
-                    "  # " + this.$t("onboarding-flow.taskDL") + "\n" +
-                        "  - id: downloadData\n" +
-                        "    type: io.kestra.plugin.fs.http.Download\n" +
-                        "    # " + this.$t("onboarding-flow.taskDLUri1") + "\n" +
-                        "    # " + this.$t("onboarding-flow.taskDLUri2") + "\n" +
-                        "    uri: \"{{inputs.csvUrl}}\"",
-                    "  # " + this.$t("onboarding-flow.taskPython") + "\n" +
-                        "  - id: analyseData\n" +
-                        "    type: io.kestra.core.tasks.scripts.Python\n" +
-                        "    inputFiles:\n" +
-                        "      # " + this.$t("onboarding-flow.taskPythonCSV1") + "\n" +
-                        "      # " + this.$t("onboarding-flow.taskPythonCSV2") + "\n" +
-                        "      data.csv: \"{{outputs.downloadData.uri}}\"\n" +
-                        "      # " + this.$t("onboarding-flow.taskPythonMain1") + "\n" +
-                        "      # " + this.$t("onboarding-flow.taskPythonMain2") + "\n" +
-                        "      # " + this.$t("onboarding-flow.taskPythonMain3") + "\n" +
-                        "      main.py: |\n" +
-                        "        import pandas as pd\n" +
-                        "        from kestra import Kestra\n" +
-                        "        data = pd.read_csv(\"data.csv\", sep=\";\")\n" +
-                        "        data.info()\n" +
-                        "        sumOfConsumption = data['conso'].sum()\n" +
-                        "        Kestra.outputs({'sumOfConsumption': int(sumOfConsumption)})\n" +
-                        "    # " + this.$t("onboarding-flow.taskPythonRequirements") + "\n" +
-                        "    requirements:\n" +
-                        "      - pandas"
+                        "  # " + this.$t("onboarding-flow.taskLog3") + "\n" +
+                        "- id: hello" + "\n" +
+                        "  type: io.kestra.core.tasks.log.Log" + "\n" +
+                        "  message: Hey there, {{ inputs.user }}!" + "\n",
+                    "  # " + this.$t("onboarding-flow.taskBash1") + "\n" +
+                        "  # " + this.$t("onboarding-flow.taskBash2") + "\n" +
+                        "- id: goodbye" + "\n" +
+                        "  type: io.kestra.core.tasks.scripts.Bash" + "\n" +
+                        "  commands:" + "\n" +
+                        "  - echo See you soon, {{ inputs.user }}!" + "\n",
+                    " # " + this.$t("onboarding-flow.triggers") + "\n" +
+                        "triggers:" + "\n" +
+                        "  # " + this.$t("onboarding-flow.triggerSchedule1") + "\n" +
+                        "    - id: everyMinute" + "\n" +
+                        "      type: io.kestra.core.models.triggers.types.Schedule" + "\n" +
+                        "      cron: \"*/1 * * * *\"" + "\n" +
+                        "      inputs:" + "\n" +
+                        "        name: Kestra master user" + "\n"
                 ]
             }
         },
diff --git a/ui/src/translations.json b/ui/src/translations.json
index a53412893e..59f189df71 100644
--- a/ui/src/translations.json
+++ b/ui/src/translations.json
@@ -336,15 +336,15 @@
       },
       "step6": {
         "title": "Logs some information",
-        "content": "First, let's start by adding a task that will log some information. This task will be executed when the flow is triggered and log <code>The flow starts</code>."
+        "content": "First, let's start by adding a task that will log some information. This task will be executed when the flow is triggered and log \"Hey there, Kestra user\""
       },
       "step7": {
-        "title": "Download a file",
-        "content": "Sometimes, you want to download a file from a remote server. This can be done by using the Download task. This task will download the file into Kestra's internal storage."
+        "title": "Run Bash command",
+        "content": "Sometimes, you want to run specific scripts, Python, Node, Bash, etc. Here we run a bash command to display a message."
       },
       "step8": {
-        "title": "Use Python to do analytics",
-        "content": "Maybe this file contains some interesting data? Let's use Python and Pandas to do some analytics on it! This task uses the output of the previous task via the <code>outputs.downloadData.uri</code> variable and defines an output named <code>sumOfConsumption</code> thanks to the Kestra Python library."
+        "title": "Schedule",
+        "content": "To schedule a flow we add a 'trigger'. Here we schedule the Flow every minute."
       },
       "step9": {
         "title": "Save your flow",
@@ -363,23 +363,17 @@
       "onboardComment1": "Flow declaration with a mandatory unique identifier, a namespace, and an optional description.",
       "onboardComment2": "Flow identifier are unique inside a namespace.",
       "inputs": "Flow inputs: each input has a name, a type, and an optional default value.",
-      "inputsDetails1": "We define one input of name 'csvUrl' with as default value the URL of the test data file.",
-      "inputsDetails2": "This test data is from the France Open Data portal and contains french electricity consumptions in CSV.",
+      "inputsDetails1": "We define one input of name 'user' with a default value 'Data Engineer'",
       "tasks1": "List of tasks that will be executed one after the other.",
       "tasks2": "Each task must have an identifier unique for the flow and a type.",
       "tasks3": "Depending on the type of the task, you may have to pass additional attributes.",
       "taskLog1": "This is one of the simplest task: it echos a message in the log, like the 'echo' command.",
       "taskLog2": "The message is passed thanks to the 'format' attribute.",
-      "taskDL": "This task will download the CSV, it will be sent to Kestra's internal storage and available from the task output.",
-      "taskDLUri1": "Here we use a variable from an input: {'{{'} and {'}}'} are separator of a Pebble expression in which we can access variables.",
-      "taskDLUri2": "All inputs are available from the 'inputs' variable using there name.",
-      "taskPython": "This task will analyse the CSV data using a Python script with the Pandas library.",
-      "taskPythonCSV1": "Here we define a file named 'data.csv' that will be available in the Python task working directory.",
-      "taskPythonCSV2": "This file is fetched from the internal storage by using the 'uri' output of the 'downloadData' task.",
-      "taskPythonMain1": "'main.py' is the Python script that will be executed.",
-      "taskPythonMain2": "It uses Pandas to read the CSV file, compute the sum of the 'conso' column, ",
-      "taskPythonMain3": "and set it as task output thanks to the Kestra Python library.",
-      "taskPythonRequirements": "As the script require the Pandas library, we must list it in the requirements."
+      "taskLog3": "We use the variable from the 'inputs' : {'{{'} and {'}}'} are separator of a Pebble expression in which we can access variables.",
+      "taskBash1": "This task runs a bash command.",
+      "taskBash2": "Here we just 'echo' a message, using again the input variable.",
+      "triggers": "To trigger the Flow we use the 'triggers' property.",
+      "triggerSchedule1": "Here we use the 'schedule' trigger to run the flow every minute."
     },
     "Skip tour": "Skip tour",
     "Next step": "Next step",
@@ -784,15 +778,15 @@
       },
       "step6": {
         "title": "Afficher des informations",
-        "content": "En premier, commençons par ajouter une tâche qui affiche quelques informations. Cette tâche sera exécutée quand le flow est déclenché et affichera <code>The flow starts</code>."
+        "content": "En premier, commençons par ajouter une tâche qui affiche quelques informations. Cette tâche sera exécutée quand le flow est déclenché et affichera <code>Hey there, Kestra user</code>."
       },
       "step7": {
-        "title": "Télécharger un fichier",
-        "content": "Parfois, vous voudrez télécharger un fichier depuis un serveur distant. Ceci peut être fait grâce à la tâche 'Download'. Cette tâche téléchargera le fichier dans le stockage interne de Kestra."
+        "title": "Exécuter une commande bash",
+        "content": "Parfois, vous souhaiterez exécuter des scripts spécifiques, Python, Node, Bash, etc. Ici, nous lançons une commande bash pour afficher un message."
       },
       "step8": {
-        "title": "Python pour l'analytique",
-        "content": "Peut-être que ce fichier contient des données intéressantes ? Utilisons Python et Pandas pour faire quelques analyses dessus! Cette tâche utilise la sortie de la tâche précédente via la variable <code>>outputs.downloadData.uri</code> et définit une nouvelle sortie nommée <code>sumOfConsumption</code> grâce à la librairie Python de Kestra."
+        "title": "Programmer",
+        "content": "Pour planifier un flux, nous ajoutons un \"déclencheur\". Ici, nous programmons le flux toutes les minutes."
       },
       "step9": {
         "title": "Sauvegarde de votre flow",
@@ -818,16 +812,11 @@
       "tasks3": "En fonction du type de tâche, vous devrez peut-être passer des attributs supplémentaires.",
       "taskLog1": "Il s'agit de l'une des tâches les plus simples : elle affiche un message dans le journal, comme la commande 'echo'.",
       "taskLog2": "Le message est transmis grâce à l'attribut 'format'.",
-      "taskDL": "Cette tâche permettra de télécharger le CSV, qui sera envoyé vers le stockage interne de Kestra et disponible à partir de la sortie de la tâche.",
-      "taskDLUri1": "Ici, nous utilisons une variable d'entrée : {'{{'} et {'}}'} sont les séparateurs d'une expression Pebble dans laquelle nous pouvons accéder aux variables.",
-      "taskDLUri2": "Toutes les entrées sont disponibles à partir de la variable 'inputs' en utilisant leur nom.",
-      "taskPython": "Cette tâche analysera les données CSV à l'aide d'un script Python avec la librairie Pandas.",
-      "taskPythonCSV1": "Ici, nous définissons un fichier nommé 'data.csv' qui sera disponible dans le répertoire de travail de la tâche Python.",
-      "taskPythonCSV2": "Ce fichier est récupéré depuis le stockage interne en utilisant la sortie 'uri' de la tâche 'downloadData'.",
-      "taskPythonMain1": "'main.py' est le script Python qui sera exécuté.",
-      "taskPythonMain2": "Il utilise Pandas pour lire le fichier CSV, calculer la somme de la colonne 'conso',",
-      "taskPythonMain3": "et la définir en tant que sortie de tâche grâce à la librairie Python de Kestra.",
-      "taskPythonRequirements": "Comme le script nécessite la librairie Pandas, nous devons la lister dans les requirements."
+      "taskLog3": "Nous utiliserons la variable de 'inputs' : {'{{'} et {'}}'} sont des séparateurs d'une expression Pebble dans laquelle nous pouvons accéder à des variables.",
+      "taskBash1": "Cette tâche exécute une commande bash.",
+      "taskBash2": "Ici, nous nous contentons d'afficher un message, en utilisant à nouveau la variable d'entrée.",
+      "triggers": "Pour déclencher le flux, nous utilisons la propriété \"triggers\".",
+      "triggerSchedule1": "Ici, nous utilisons le déclencheur \"schedule\" pour exécuter le flux toutes les minutes."
     },
     "Skip tour": "Passer",
     "Next step": "Étape suivante",


Test patch: