# Crank v0.2.0 - Table of Contents Pure finite state machines (FSM) for Elixir — testable data structures first, optional gen_statem process adapter ## Pages - [Changelog](changelog.md) - [Crank -- Design Specification](design.md) - Guides - [Hexagonal Architecture with Crank](hexagonal-architecture.md) ## Modules - [Crank](Crank.md): ## What this is - [Crank.Examples.Order](Crank.Examples.Order.md): An order that moves through five states: pending, paid, shipped, delivered, and cancelled. - [Crank.Examples.Submission](Crank.Examples.Submission.md): A submission workflow where each state is its own struct. - [Crank.Machine](Crank.Machine.md): The struct that `Crank.crank/2` takes and returns. - [Crank.Server](Crank.Server.md): Runs a `Crank` callback module as a supervised `gen_statem` process. - Exceptions - [Crank.StoppedError](Crank.StoppedError.md): Raised when `Crank.crank/2` or `Crank.crank!/2` receives a machine that has already stopped.