# Hello World - Tutorial

In this "Hello World" tutorial you will learn how to use the essential features of Starcounter by building an expense tracker complete with a database, interactive UI and real-time syncing.

We will use C# as the server-side language. All the app logic will be written in C# and execute in the database. The client-server communication will be handled by [Palindrom](/2.3.2/guides/blendable-web-apps/palindrom.md) over HTTP and WebSocket. This is how we recommend building Starcounter apps.

## Content

In the first two steps, you will create the simplest possible application that binds the database to the view.

In the four following steps, you will create an expense tracker by establishing a UI and building functionality that allows CRUD operations on the database.

## Final Result

![Final result](/files/-LADqge-DW0tcLAXNSpD)

## Requirements

To get through this tutorial, you will need to fulfill the [system requirements](http://starcounter.io/download/) which includes having Visual Studio 2015 or 2017 (not VS Code) and the [latest Release Candidate](http://downloads.starcounter.com/download) of Starcounter installed.

## Extra Resources

Since the author is a mere mortal, there might be mistakes in the code or text. If you experience that something doesn't work as intended, you can look at the [source code](https://github.com/Starcounter/HelloWorld). Each commit in this repository represents one step in the tutorial. For further explanations of the concepts discussed, you can take a look at the [guide section](/2.3.2/guides.md).

Are you ready?

Let's get started!


---

# 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.starcounter.io/2.3.2/hello-world-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.
