# `mix rivet.init`
[🔗](https://github.com/srevenant/rivet/blob/main/lib/mix/tasks/init.ex#L1)

Initialize a Rivets project. For full syntax try: mix rivet help

# `rivet_config`

```elixir
@type rivet_config() :: %{
  app: String.t(),
  base: atom(),
  base_path: String.t(),
  models_root: String.t(),
  opts: Keyword.t(),
  tests_root: String.t()
}
```

# `rivet_error`

```elixir
@type rivet_error() :: {:error, String.t() | atom()}
```

# `rivet_migration_input_any`

```elixir
@type rivet_migration_input_any() ::
  rivet_migration_input_include()
  | rivet_migration_input_external()
  | rivet_migration_input_model()
```

# `rivet_migration_input_external`

```elixir
@type rivet_migration_input_external() :: %{
  external: String.t(),
  migrations: [rivet_migration_input_include()]
}
```

# `rivet_migration_input_include`

```elixir
@type rivet_migration_input_include() :: %{include: module(), prefix: integer()}
```

# `rivet_migration_input_model`

```elixir
@type rivet_migration_input_model() :: map()
```

# `rivet_migration_state`

```elixir
@type rivet_migration_state() :: %{
  idx: %{required(integer()) =&gt; Rivet.Migration.t()},
  mods: %{required(atom()) =&gt; list()}
}
```

# `rivet_migrations`

```elixir
@type rivet_migrations() :: [Rivet.Migration.t()]
```

# `rivet_state_result`

```elixir
@type rivet_state_result() :: {:ok, rivet_migration_state()} | rivet_error()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
