# Solve v0.3.0 - Table of Contents

> Declarative UI agnostic state management architecture

## Pages

- [Solve](readme.md)

- Release
  - [Changelog](changelog.md)

- Internals
  - [Solve architecture](architecture.md)

## Modules

- Core
  - [Solve](Solve.md): Coordinates controller graph validation, lifecycle management, and subscriptions.

- Controllers
  - [Solve.Collection](Solve.Collection.md): Ordered keyed collection used by Solve collection sources, dependencies, and lookups.

  - [Solve.Controller](Solve.Controller.md): In Solve your main building block is the controller. Controllers are composed in the
app state graph, and they can depend on each other. UI can subscribe to the controller
state. Each controller has its own internal state, and each controller has read access
to the exposed state of its dependencies.
  - [Solve.ControllerSpec](Solve.ControllerSpec.md): Controller specification used by `Solve` init and dependency validation.

- Messaging
  - [Solve.Dispatch](Solve.Dispatch.md): Dispatch payload used in `%Solve.Message{type: :dispatch}` envelopes.

  - [Solve.Lookup](Solve.Lookup.md): Process-local, monitor-backed subscriptions to a Solve app.
  - [Solve.Message](Solve.Message.md): Envelope for Solve runtime messages exchanged between subscribers and controllers.

  - [Solve.Update](Solve.Update.md): Update payload used in `%Solve.Message{type: :update}` envelopes.

- Internals
  - [Solve.DependencyGraph](Solve.DependencyGraph.md): Compiles controller specs into dependency graph data.

