> Markdown version of [Start a Project](https://vaadin.com/docs/v24/getting-started/start). Section index: [llms.txt](https://vaadin.com/docs/v24/getting-started/llms.txt)

# Start a Project

The easiest way of starting a new Vaadin project is to generate a **walking skeleton** at [Vaadin Start](https://start.vaadin.com/).

A walking skeleton is a minimal application that demonstrates how all the building blocks interact — from the UI to the database. It contains three types of elements: **production-ready features**, **demonstration examples that should be removed once understood**, and **empty placeholders**. Its purpose is to validate the architecture early while providing implementation patterns to follow.

You build your application by keeping the production-ready features, studying and replacing the demonstration examples, and filling in the placeholders with your actual implementations.

> **Tip:** Many of the [Building Apps](https://vaadin.com/docs/v24/building-apps.md) guides contain mini-tutorials that start with a walking skeleton and then guide you through adding features to it.

You’ll get a [walk-through](https://vaadin.com/docs/v24/getting-started/walk-through.md) of the Vaadin walking skeleton later.

## <a id="generate-a-skeleton"></a>Generate a Skeleton

[Open Vaadin Start](https://start.vaadin.com/)

The generator asks for some basic information, like the Maven `groupId` and `artifactId`. These fields are pre-filled, so you only need to change them if desired.

Next, choose between **Flow** and **Hilla** for your user interface:

- **Flow** if you prefer implementing the UI in Java.

- **Hilla** if you prefer React and TypeScript.

You can mix Flow and Hilla within the same application. However, most projects typically use only one. The choice depends on the team’s skill set and the project’s functional requirements.

> **Tip:** To create an empty project, leave both options unchecked.

Click the **Download** button to download a zip-file with your new project.

## <a id="try-it"></a>Try It

After downloading your new project, unzip it into a directory of your choice.

### <a id="start-the-application"></a>Start the Application

Open a terminal in the project directory and run the following command:

Terminal

**macOS / Linux**

```terminal
./mvnw
```

PowerShell

**Windows**

```terminal
mvnw
```

The first startup may take a while as Maven and npm download the required dependencies. Once initialization is complete, the application will be available at: <http://localhost:8080>

> **Tip: Are you behind a proxy?**
>
> Vaadin uses Node.js to download the frontend toolchain during the build. If you are behind a proxy, you may need to configure Node to use that. See the [Flow Reference](https://vaadin.com/docs/v24/flow/configuration/development-mode/node-js.md#proxy-settings-for-downloading-frontend-toolchain) guide for details.

### <a id="interact-with-the-application"></a>Interact with the Application

The application looks like this:

[Image: A walking skeleton running in the Chrome web browser]

To test basic functionality:

1. Navigate to the **Task List** view.

2. Enter a task description in the text field.

3. Select a due date.

4. Click the **Create** button.

The new task appears in the grid below.

Next, try entering the word `fail` into the description field and click **Create** again. This simulates an error, which is caught by the built-in error handler and results in a visible error notification.

### <a id="stop-the-application"></a>Stop the Application

To shut down the application, press Ctrl+C in the terminal.
