# Getting started

AURA is a C++20 framework for native, touch-enabled interfaces. Describe your UI in `.aura`, connect it to C++, and render with Skia. SDL3 handles windows and input.

## Requirements

On Linux: CMake ≥ 3.24, Ninja, GCC ≥ 13, OpenSSL and zlib development files. The UI needs X11 development files. CMake downloads other dependencies through FetchContent. You need access to an AURA checkout; a public repository download is not currently offered here.

## Build and run

From the root of your AURA checkout:

```bash
cmake --preset dev
cmake --build build/dev
ctest --test-dir build/dev
build/dev/examples/hello/aura-hello
```

## Explore the framework

```bash
build/dev/examples/demo/aura-demo
build/dev/examples/demo/aura-demo --language en
build/dev/examples/demo/aura-demo --dynamic
build/dev/examples/demo/aura-demo --render-all /tmp/aura-demo
```

The gallery covers widgets, input, layouts, graphics, animation, media and runtime modules. Optional modules depend on your build options. See the [demo documentation](demo.md).

## Add it to your application

```cmake
add_subdirectory(aura)
add_executable(my-app main.cpp)
aura_add_ui(my-app FILES ui/main.aura)
target_link_libraries(my-app PRIVATE aura::ui)
```

`aura_add_ui` runs `aurac` to generate typed C++ code. Your application connects state values and signals. For integration and a complete application entry point, see [The application side](application.md).

## Preview without restarting

```bash
build/dev/tools/aura-view/aura-view examples/hello
```

In VS Code, `Ctrl+K V` opens the preview; a preview item is also available in the status bar. See [VS Code](vscode.md) and [aura-view](preview.md).

## Next steps

Explore the [language](language.md), [state and bindings](state-bindings.md), and [dynamic mode](dynamic.md).

## Try it in the browser

The [playground](../playground.html) runs editable AURA files locally as Wasm. The [browser documentation](browser.md) explains how to build the complete Hello/demo examples and describes current platform limits.

## Choose a target platform

The [platform overview](platforms.md) explains the status of Linux, browser/WebAssembly, Windows, macOS and mobile systems, along with platform-specific module limits.
