# Start building

ROM is a backend-first Rust framework for reactive applications. Start with the maintained local workshop.

> This website uses the 0.1.0 source candidate. The last accepted complete release is 0.0.3. Registry publication remains disabled.

## Get the source

Clone the repository. Enter its directory.

```sh
git clone https://github.com/pmikstacki/ROM.git
cd ROM
```

Use the toolchain declared by the selected checkout. Read `rust-toolchain.toml` and the [NixOS instructions](../infra/nixos/README.md).

## Run the workshop

Run the SQLite smoke workflow.

```sh
./demo/run smoke
```

Run the same workflow with redb.

```sh
./demo/run smoke redb
```

The workshop demonstrates declarations, mutations, live queries and event history.
Read the [author workshop](../demo/README.md) for server commands.

## Inspect the public consumer

The independent consumer declares a Task and a Setting through public interfaces.

```sh
cargo run -p rom-consumer --locked
```

It creates a Task, observes query membership and invokes its completion action.
Inspect [the complete consumer](../examples/consumer/src/main.rs) and [Task declaration](../examples/consumer/src/task.rs).

## Choose your next step

Read [the Resource model](concepts.md) for the lifecycle.
Use [actions and inputs](action-inputs.md) to declare behavior.
Use [queries](queries.md) to observe results.
Use [workspace composition](studio-compositions.md) for Svelte integration.

## Verify your checkout

Run the local verifier before distributing changed source.

```sh
./scripts/check
```

A selected example does not establish full release acceptance.
Read [release support](release-support.md) for accepted evidence and remaining limits.
