# ArchTest v0.3.1 - Table of Contents

ArchUnit-inspired architecture testing library for Elixir. Write ExUnit tests that enforce dependency rules, layered architecture, modulith bounded contexts, and naming conventions.

## GUIDES

- [ArchTest](readme.md)
- [Changelog](changelog.md)
- [LICENSE](license.md)

- Guides
  - [Getting Started with ArchTest](getting-started.md)
  - [Migrating from 0.2 to 0.3](migrating-to-0-3.md)
  - [Advanced Rules](advanced-rules.md)
  - [Layered Architecture](layered-architecture.md)
  - [Modulith / Bounded-Context Rules](modulith-rules.md)
  - [Freezing (Gradual Adoption)](freezing.md)

- Examples
  - [FixtureApp Architecture Examples](fixture-app-examples.md)

- Cheatsheets
  - [ArchTest Cheatsheet](arch_test.md)

## Modules

- Core DSL
  - [ArchTest](ArchTest.md): ArchUnit-inspired architecture testing library for Elixir.
  - [ArchTest.Assertions](ArchTest.Assertions.md): Core assertion functions for architecture rules.
  - [ArchTest.ModuleSet](ArchTest.ModuleSet.md): Represents a lazy selection of modules for use in architecture rules.

- Architecture Patterns
  - [ArchTest.Layers](ArchTest.Layers.md): Layered architecture enforcement.
  - [ArchTest.Modulith](ArchTest.Modulith.md): Modulith / bounded context isolation enforcement.

- Data Collection
  - [ArchTest.Call](ArchTest.Call.md): Function-level call metadata extracted from compiled BEAM files.
  - [ArchTest.Collector](ArchTest.Collector.md): Builds a module dependency graph using OTP's `:xref` tool.
  - [ArchTest.Pattern](ArchTest.Pattern.md): Glob pattern matching for Elixir module names.

- Advanced Features
  - [ArchTest.Conventions](ArchTest.Conventions.md): Pre-built assertion helpers for common Elixir coding conventions.
  - [ArchTest.Freeze](ArchTest.Freeze.md): Violation baseline ("freeze") support for gradual architectural adoption.
  - [ArchTest.Metrics](ArchTest.Metrics.md): Coupling and instability metrics for architecture analysis.

- Diagram Conformance
  - [ArchTest.PlantUML](ArchTest.PlantUML.md): Minimal PlantUML component conformance checks.

- Internals
  - [ArchTest.Rule](ArchTest.Rule.md): Represents an architecture rule — a description and a check function that
evaluates against the dependency graph and returns a list of violations.

  - [ArchTest.Violation](ArchTest.Violation.md): Represents a single architecture rule violation.

## Mix Tasks

- [mix arch_test.gen.conventions](Mix.Tasks.ArchTest.Gen.Conventions.md): Generates a code conventions architecture test file.
- [mix arch_test.gen.freeze](Mix.Tasks.ArchTest.Gen.Freeze.md): Generates a freeze baseline architecture test file.
- [mix arch_test.gen.layers](Mix.Tasks.ArchTest.Gen.Layers.md): Generates a classic layered architecture test file.
- [mix arch_test.gen.modulith](Mix.Tasks.ArchTest.Gen.Modulith.md): Generates a modulith architecture test file.
- [mix arch_test.gen.naming](Mix.Tasks.ArchTest.Gen.Naming.md): Generates a naming convention architecture test file.
- [mix arch_test.gen.onion](Mix.Tasks.ArchTest.Gen.Onion.md): Generates an onion / hexagonal architecture test file.
- [mix arch_test.gen.phoenix](Mix.Tasks.ArchTest.Gen.Phoenix.md): Generates an opinionated Phoenix architecture test file.
- [mix arch_test.install](Mix.Tasks.ArchTest.Install.md): Generates a basic architecture test file with a cycle-freedom check.

