# Getting Started

In this chapter, we will build a simple Pronghorn app. The goals are the following:

1. Create a schema that defines passing of a "Hello World, $NAME" message.
2. Write a stage that produces the input, and another stage that receives it and displays it.
3. Get familiarized with Pronghorn basics and syntax.

We can then visualize our data flow:

![Simple visualization of our data flow & contracts](/files/-LDwbTD8U2u_1Rc4Luo6)

(Of course, any real application would be a lot more complex than this simple example).

Before we do anything else, we need to actually create the message format, but before this, let's set up an actual Pronghorn project.

## Creating a new Project

As instructed on the previous page, you need Maven installed. We use Maven Archetypes to generate a template for you to get started.

First, create a directory called `PronghornProjects`:

```bash
$ mkdir PronghornProjects
$ cd PronghornProjects
```

Next, run the following command:

```bash
$ mvn archetype:generate -DarchetypeGroupId=com.ociweb -DarchetypeArtifactId=pronghorn-ranch -DarchetypeVersion=1.0.5
```

You will then be prompted to fill out some information:

```bash
Define value for property 'groupID': com.ociweb
Define value for property 'artifactId': HelloWorldPronghorn
Define value for property 'version' 0.0.1-SNAPSHOT: (leave this blank) :
Define value for property 'package' com.ociweb: (leave this blank) :
Define value for property 'mainClass' : HelloWorldPronghorn
```

Hit "Y" to generate the HelloWorldPronghorn project.&#x20;

Next, open the project in your favorite IDE. You can safely delete the following files (which will not be used in this simple tutorial):

* SchemaOneSchema.java
* SchemaTest.java
* SchemaOne.xml
* HelloWorldPronghornTest.java

Delete all the content in HelloWorldPronghorn.java and replace it with the following:

```java
package com.ociweb;

import com.ociweb.pronghorn.pipe.Pipe;
import com.ociweb.pronghorn.stage.scheduling.GraphManager;
import com.ociweb.pronghorn.stage.scheduling.StageScheduler;

public class HelloWorldPronghorn  {
   public static void main(String[] args) {

        //todo: code here

   }
}
```

In the next chapters, we will edit this file to create our HelloWorld example.&#x20;


---

# 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://oci-pronghorn.gitbook.io/pronghorn/chapter-1-getting-started-with-pronghorn/1.-hello-world-introduction/0.-getting-started.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.
