README.md

# Raggio.Schema

Composable schema definition and validation library for Elixir.

## Purpose

Raggio.Schema provides a composable, function-based API for defining data schemas and validating data without complex macro syntax. Build type-safe schemas using the pipe operator and pure functions.

## Installation

Add `raggio_schema` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:raggio_schema, "~> 0.1.0"}
  ]
end
```

## Quick Example

```elixir
# Define schema
user_schema = Raggio.Schema.struct([
  {:name, Raggio.Schema.string()},
  {:age, Raggio.Schema.integer() |> Raggio.Schema.positive()}
])

# Validate data
case Raggio.Schema.validate(user_schema, %{name: "Alice", age: 30}) do
  {:ok, data} -> {:ok, data}
  {:error, errors} -> {:error, errors}
end
```

## More Examples

See the `examples/raggio_schema/` directory for working, compilable examples demonstrating various patterns and use cases.