torrust-tracker-deployer 0.1.0

Torrust Tracker Deployer - Deployment Infrastructure with Ansible and OpenTofu
Documentation
# Documentation Index

Welcome to the Torrust Tracker Deployer documentation! This index helps you quickly find the right documentation for your needs.

## ๐Ÿ“š Quick Reference

### ๐ŸŽฏ Most Important Documents (Read These First)

| When You Need To...                  | Read This Document                                                                                                       |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
| Understand the codebase architecture | [`codebase-architecture.md`]codebase-architecture.md - DDD layers, module organization                                 |
| Place code in the correct layer      | [`contributing/ddd-layer-placement.md`]contributing/ddd-layer-placement.md - **CRITICAL** decision flowchart           |
| Follow development principles        | [`development-principles.md`]development-principles.md - Observability, Testability, User Friendliness, Actionability  |
| Commit code                          | [`contributing/commit-process.md`]contributing/commit-process.md - Pre-commit checks, conventional commits             |
| Cut a release                        | [`release-process.md`]release-process.md - Standard release sequence, branch/tag rules, Docker + crate publication     |
| Handle errors properly               | [`contributing/error-handling.md`]contributing/error-handling.md - Explicit enums, actionable messages                 |
| Handle output properly               | [`contributing/output-handling.md`]contributing/output-handling.md - **CRITICAL** UserOutput, never `println!`         |
| Organize Rust code                   | [`contributing/module-organization.md`]contributing/module-organization.md - **CRITICAL** import conventions           |
| Work with templates                  | [`contributing/templates/`]contributing/templates/ - **CRITICAL** Tera syntax, registration                            |
| Write unit tests                     | [`contributing/testing/unit-testing.md`]contributing/testing/unit-testing.md - Naming conventions (no `test_` prefix!) |
| Run E2E tests                        | [`e2e-testing/README.md`]e2e-testing/README.md - Quick start, test suites                                              |
| Understand a past decision           | [`decisions/README.md`]decisions/README.md - 30+ ADRs indexed                                                          |
| Use the CLI                          | [`user-guide/README.md`]user-guide/README.md - Complete user guide                                                     |

### ๐Ÿ“‚ Documentation Directory Structure

```text
docs/
โ”œโ”€โ”€ contributing/          ๐Ÿค Contribution guidelines (branching, commits, DDD, errors, templates, testing)
โ”œโ”€โ”€ decisions/            ๐Ÿ“‹ Architectural Decision Records (30+ ADRs with context and rationale)
โ”œโ”€โ”€ e2e-testing/          ๐Ÿงช E2E test documentation (architecture, running, manual, troubleshooting)
โ”œโ”€โ”€ experiments/          ๐Ÿงช Active experiments exploring potential features and improvements
โ”œโ”€โ”€ features/             โœจ Feature specifications and development tracking (5 active features)
โ”œโ”€โ”€ user-guide/           ๐Ÿ“– User documentation (commands, providers, quick start)
โ”œโ”€โ”€ tech-stack/           ๐Ÿ› ๏ธ Technology docs (Ansible, LXD, OpenTofu, SSH)
โ”œโ”€โ”€ technical/            ๐Ÿ”ง Technical deep dives (template system, type erasure patterns)
โ”œโ”€โ”€ research/             ๐Ÿ”ฌ Research notes (Ansible testing, UX patterns, MVVM analysis)
โ”œโ”€โ”€ refactors/            ๐Ÿ”„ Refactoring plans and tracking
โ”œโ”€โ”€ implementation-plans/ ๐Ÿ“ Step-by-step plans for complex changes
โ”œโ”€โ”€ issues/               ๐Ÿ“‹ Issue templates and specifications
โ”œโ”€โ”€ external-issues/      โš ๏ธ External tool issues (GitHub Actions, Tracker)
โ””โ”€โ”€ analysis/             ๐Ÿ“Š Code analysis (presentation layer structure)
```

## ๐Ÿ“š Documentation by Category

### For Users

- **Getting Started**: [`user-guide/README.md`]user-guide/README.md, [`user-guide/quick-start/`]user-guide/quick-start/README.md
- **Commands**: [`user-guide/commands/`]user-guide/commands/, [`console-commands.md`]console-commands.md
- **Providers**: [`user-guide/providers/`]user-guide/providers/

### For Contributors

- **Contributing Guide**: [`contributing/README.md`]contributing/README.md
- **Architecture**: [`codebase-architecture.md`]codebase-architecture.md, [`contributing/ddd-layer-placement.md`]contributing/ddd-layer-placement.md
- **Testing**: [`contributing/testing/`]contributing/testing/, [`e2e-testing/`]e2e-testing/
- **Code Quality**: [`contributing/linting.md`]contributing/linting.md, [`development-principles.md`]development-principles.md

### For Maintainers

- **Decisions**: [`decisions/`]decisions/ (30+ ADRs)
- **Features**: [`features/`]features/ (active and planned features)
- **Refactoring**: [`refactors/`]refactors/ (ongoing improvements)
- **Roadmap**: [`roadmap.md`]roadmap.md

### For Researchers/Architects

- **Research**: [`research/`]research/ (testing strategies, UX patterns, MVVM analysis)
- **Analysis**: [`analysis/`]analysis/ (code structure analysis)
- **Vision**: [`vision-infrastructure-as-software.md`]vision-infrastructure-as-software.md

## ๐ŸŽฏ Quick Navigation by Task

### "I want to..."

| Task                      | Start Here                                                                     |
| ------------------------- | ------------------------------------------------------------------------------ |
| Start using the deployer  | [`user-guide/README.md`]user-guide/README.md                                 |
| Contribute code           | [`contributing/README.md`]contributing/README.md                             |
| Understand architecture   | [`codebase-architecture.md`]codebase-architecture.md                         |
| Add code to correct layer | [`contributing/ddd-layer-placement.md`]contributing/ddd-layer-placement.md   |
| Run E2E tests             | [`e2e-testing/README.md`]e2e-testing/README.md                               |
| Write unit tests          | [`contributing/testing/unit-testing.md`]contributing/testing/unit-testing.md |
| Understand a decision     | [`decisions/README.md`]decisions/README.md                                   |
| Plan a new feature        | [`features/README.md`]features/README.md                                     |
| Perform a release         | [`release-process.md`]release-process.md                                     |
| Fix external tool issues  | [`external-issues/README.md`]external-issues/README.md                       |
| Work with templates       | [`contributing/templates/`]contributing/templates/                           |
| Handle errors properly    | [`contributing/error-handling.md`]contributing/error-handling.md             |
| Handle output properly    | [`contributing/output-handling.md`]contributing/output-handling.md           |
| Organize Rust modules     | [`contributing/module-organization.md`]contributing/module-organization.md   |

---

## ๐Ÿ“‹ Complete Documentation Inventory

<details>
<summary><strong>๐Ÿ“ Root Level Documentation (Click to Expand)</strong></summary>

| File                                                                           | Description                                                                                                                                                   |
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`codebase-architecture.md`]codebase-architecture.md                         | Comprehensive overview of DDD architecture, layer structure (Domain, Application, Infrastructure, Presentation), and module organization                      |
| [`console-commands.md`]console-commands.md                                   | Complete reference for CLI commands, deployment states, and implementation status of all commands (create, provision, configure, release, run, destroy, etc.) |
| [`deployment-overview.md`]deployment-overview.md                             | High-level overview of deployment lifecycle states, command relationships, and state transitions with visual diagrams                                         |
| [`development-principles.md`]development-principles.md                       | Core principles: Observability, Testability, User Friendliness, Actionability - guiding all development decisions and code quality standards                  |
| [`documentation.md`]documentation.md                                         | Guide explaining documentation organization structure, categories, and where to place different types of documentation                                        |
| [`linting.md`]linting.md                                                     | Linting tool usage, configuration files, and quick commands for maintaining code quality across all file types                                                |
| [`roadmap.md`]roadmap.md                                                     | Development roadmap with epics, features, and implementation status tracking                                                                                  |
| [`roadmap-questions.md`]roadmap-questions.md                                 | Open questions and discussions about roadmap priorities and future development direction                                                                      |
| [`tofu-lxd-configuration.md`]tofu-lxd-configuration.md                       | OpenTofu configuration details for LXD provider setup and usage                                                                                               |
| [`vision-infrastructure-as-software.md`]vision-infrastructure-as-software.md | Long-term vision for evolving Infrastructure as Code to Infrastructure as Software with DDD principles                                                        |
| [`vm-providers.md`]vm-providers.md                                           | Overview of supported VM providers (LXD, Hetzner) and provider architecture                                                                                   |

</details>

<details>
<summary><strong>๐Ÿค Contributing Guidelines (18 documents) (Click to Expand)</strong></summary>

Essential guides: DDD layer placement, module organization, error handling, templates, commit process, testing conventions
**Key Documents:**

- [`contributing/README.md`]contributing/README.md - Quick reference guide to all contribution documentation
- [`contributing/ddd-layer-placement.md`]contributing/ddd-layer-placement.md - **CRITICAL**: Rules for placing code in correct DDD layers
- [`contributing/module-organization.md`]contributing/module-organization.md - **CRITICAL**: Module organization and Rust import patterns
- [`contributing/templates/`]contributing/templates/ - **CRITICAL**: Tera template syntax and registration
- [`contributing/output-handling.md`]contributing/output-handling.md - **CRITICAL**: Output handling with UserOutput (never `println!`)
- [`contributing/error-handling.md`]contributing/error-handling.md - Error handling principles
- [`contributing/commit-process.md`]contributing/commit-process.md - Commit process and pre-commit checks
- [`contributing/testing/unit-testing.md`]contributing/testing/unit-testing.md - Unit testing conventions
- [`contributing/testing/unit-testing.md`]contributing/testing/unit-testing.md - Unit testing conventions

</details>

<details>
<summary><strong>๐Ÿ“‹ Architectural Decision Records (30+ ADRs) (Click to Expand)</strong></summary>

Index at [`decisions/README.md`](decisions/README.md) - All architectural decisions documented with context, rationale, and consequences

**Recent Notable Decisions:**

- Cloud-Init SSH Port Configuration with Reboot
- Single Docker Image for Sequential E2E Command Testing
- Register Command SSH Port Override
- Migration to AGENTS.md Standard
- ReentrantMutex Pattern for UserOutput
- Environment Variable Prefix (`TORRUST_TD_`)
- Command State Return Pattern
- Actionable Error Messages
- LXD VMs over Containers
- Tera Minimal Templating Strategy

</details>

<details>
<summary><strong>๐Ÿงช E2E Testing Documentation (8 documents) (Click to Expand)</strong></summary>

Architecture, running tests, manual testing, troubleshooting, test suites, contributing, advanced techniques

**Key Documents:**

- [`e2e-testing/README.md`]e2e-testing/README.md - Overview and quick start
- [`e2e-testing/running-tests.md`]e2e-testing/running-tests.md - How to run automated tests
- [`e2e-testing/manual-testing.md`]e2e-testing/manual-testing.md - Manual testing guide
- [`e2e-testing/troubleshooting.md`]e2e-testing/troubleshooting.md - Common issues and solutions
- [`e2e-testing/architecture.md`]e2e-testing/architecture.md - Testing architecture and design

</details>

<details>
<summary><strong>โœจ Feature Development (7+ features) (Click to Expand)</strong></summary>

Feature specs, templates, 5 active features

**Active Features:**

- Hetzner Provider Support
- Import Existing Instances
- Hybrid Command Architecture
- Linter Auto-fix
- Linter Parallel Execution (deferred)
- Environment State Management (refactoring)
- Progress Reporting in Application Layer
- SDK โ€” Programmatic Deployer Access (completed)

See [`features/README.md`](features/README.md) for complete list and templates.

</details>

<details>
<summary><strong>๐Ÿ“– User Documentation (Click to Expand)</strong></summary>

Complete user guide with command documentation, provider guides, quick start, logging, template customization

**Key Documents:**

- [`user-guide/README.md`]user-guide/README.md - Complete user guide
- [`user-guide/quick-start/`]user-guide/quick-start/README.md - Quick start guides (Docker and native)
- [`user-guide/commands/`]user-guide/commands/ - Individual command documentation (8 commands)
- [`user-guide/providers/`]user-guide/providers/ - Provider-specific guides (LXD, Hetzner)

</details>

<details>
<summary><strong>๐Ÿ› ๏ธ Technology Documentation (4 documents) (Click to Expand)</strong></summary>

Ansible, LXD, OpenTofu, SSH keys - installation, setup, and usage

- [`tech-stack/ansible.md`]tech-stack/ansible.md
- [`tech-stack/lxd.md`]tech-stack/lxd.md
- [`tech-stack/opentofu.md`]tech-stack/opentofu.md
- [`tech-stack/ssh-keys.md`]tech-stack/ssh-keys.md

</details>

<details>
<summary><strong>๐Ÿ”ง Technical Deep Dives (2 documents) (Click to Expand)</strong></summary>

- [`contributing/templates/template-system-architecture.md`]contributing/templates/template-system-architecture.md - **CRITICAL**: Template system architecture and Project Generator pattern
- [`technical/type-erasure-pattern.md`]technical/type-erasure-pattern.md - Type erasure pattern for Environment states

</details>

<details>
<summary><strong>๐Ÿ”ฌ Research Notes (Click to Expand)</strong></summary>

Ansible testing strategy, Docker vs LXD, E2E testing, UX patterns, MVVM analysis, presentation layer organization

**Key Documents:**

- [`research/ansible-testing-strategy.md`]research/ansible-testing-strategy.md - Comprehensive Ansible testing strategy
- [`research/docker-vs-lxd-ansible-testing.md`]research/docker-vs-lxd-ansible-testing.md - Technology comparison
- [`research/UX/`]research/UX/ - UX research documents (console output patterns, logging strategy)
- [`research/mvvm-pattern-analysis/`]research/mvvm-pattern-analysis/ - MVVM pattern research

</details>

<details>
<summary><strong>๐Ÿงช Experiments (Click to Expand)</strong></summary>

Active experiments exploring potential features and improvements

**Active Experiments:**

- [`experiments/cli-json-schema/`]experiments/cli-json-schema/ - JSON Schema generation for CLI interface (machine-readable, versionable CLI specification)

</details>

<details>
<summary><strong>๐Ÿ”„ Other Documentation Categories (Click to Expand)</strong></summary>

**Refactoring Plans:**

- [`refactors/README.md`]refactors/README.md - Process, templates, active/completed refactorings

**Implementation Plans:**

- [`implementation-plans/README.md`]implementation-plans/README.md - Step-by-step plans for complex changes

**Issue Documentation:**

- [`issues/`]issues/ - Templates for epics, issues, and specifications

**External Tool Issues:**

- [`external-issues/README.md`]external-issues/README.md - Issues with external tools (GitHub Actions, Tracker)
- [`external-issues/github-actions/`]external-issues/github-actions/ - GitHub Actions CI/CD issues
- [`external-issues/tracker/`]external-issues/tracker/ - Torrust Tracker issues

**Code Analysis:**

- [`analysis/presentation-layer/`]analysis/presentation-layer/ - Presentation layer structure analysis

</details>

---

## ๐Ÿ“Š Statistics

- **Total Documentation Files**: 160+ markdown files
- **Major Categories**: 13 top-level directories
- **ADRs**: 30+ architectural decisions documented
- **Active Features**: 5 features in various stages
- **Test Documentation**: Comprehensive E2E testing guides
- **Contribution Guides**: 18 contributor-focused documents