|
| 1 | +# Documentation Index |
| 2 | + |
| 3 | +Welcome to the Torrust Tracker Deployer documentation! This index helps you quickly find the right documentation for your needs. |
| 4 | + |
| 5 | +## 📚 Quick Reference |
| 6 | + |
| 7 | +### 🎯 Most Important Documents (Read These First) |
| 8 | + |
| 9 | +| When You Need To... | Read This Document | |
| 10 | +| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | |
| 11 | +| Understand the codebase architecture | [`codebase-architecture.md`](codebase-architecture.md) - DDD layers, module organization | |
| 12 | +| Place code in the correct layer | [`contributing/ddd-layer-placement.md`](contributing/ddd-layer-placement.md) - **CRITICAL** decision flowchart | |
| 13 | +| Follow development principles | [`development-principles.md`](development-principles.md) - Observability, Testability, User Friendliness, Actionability | |
| 14 | +| Commit code | [`contributing/commit-process.md`](contributing/commit-process.md) - Pre-commit checks, conventional commits | |
| 15 | +| Handle errors properly | [`contributing/error-handling.md`](contributing/error-handling.md) - Explicit enums, actionable messages | |
| 16 | +| Organize Rust code | [`contributing/module-organization.md`](contributing/module-organization.md) - **CRITICAL** import conventions | |
| 17 | +| Work with templates | [`contributing/templates.md`](contributing/templates.md) - **CRITICAL** Tera syntax, registration | |
| 18 | +| Write unit tests | [`contributing/testing/unit-testing.md`](contributing/testing/unit-testing.md) - Naming conventions (no `test_` prefix!) | |
| 19 | +| Run E2E tests | [`e2e-testing/README.md`](e2e-testing/README.md) - Quick start, test suites | |
| 20 | +| Understand a past decision | [`decisions/README.md`](decisions/README.md) - 30+ ADRs indexed | |
| 21 | +| Use the CLI | [`user-guide/README.md`](user-guide/README.md) - Complete user guide | |
| 22 | + |
| 23 | +### 📂 Documentation Directory Structure |
| 24 | + |
| 25 | +```text |
| 26 | +docs/ |
| 27 | +├── contributing/ 🤝 Contribution guidelines (branching, commits, DDD, errors, templates, testing) |
| 28 | +├── decisions/ 📋 Architectural Decision Records (30+ ADRs with context and rationale) |
| 29 | +├── e2e-testing/ 🧪 E2E test documentation (architecture, running, manual, troubleshooting) |
| 30 | +├── features/ ✨ Feature specifications and development tracking (5 active features) |
| 31 | +├── user-guide/ 📖 User documentation (commands, providers, quick start) |
| 32 | +├── tech-stack/ 🛠️ Technology docs (Ansible, LXD, OpenTofu, SSH) |
| 33 | +├── technical/ 🔧 Technical deep dives (template system, type erasure patterns) |
| 34 | +├── research/ 🔬 Research notes (Ansible testing, UX patterns, MVVM analysis) |
| 35 | +├── refactors/ 🔄 Refactoring plans and tracking |
| 36 | +├── implementation-plans/ 📝 Step-by-step plans for complex changes |
| 37 | +├── issues/ 📋 Issue templates and specifications |
| 38 | +├── github-actions-issues/ ⚠️ CI/CD troubleshooting |
| 39 | +└── analysis/ 📊 Code analysis (presentation layer structure) |
| 40 | +``` |
| 41 | + |
| 42 | +## 📚 Documentation by Category |
| 43 | + |
| 44 | +### For Users |
| 45 | + |
| 46 | +- **Getting Started**: [`user-guide/README.md`](user-guide/README.md), [`user-guide/quick-start.md`](user-guide/quick-start.md) |
| 47 | +- **Commands**: [`user-guide/commands/`](user-guide/commands/), [`console-commands.md`](console-commands.md) |
| 48 | +- **Providers**: [`user-guide/providers/`](user-guide/providers/) |
| 49 | + |
| 50 | +### For Contributors |
| 51 | + |
| 52 | +- **Contributing Guide**: [`contributing/README.md`](contributing/README.md) |
| 53 | +- **Architecture**: [`codebase-architecture.md`](codebase-architecture.md), [`contributing/ddd-layer-placement.md`](contributing/ddd-layer-placement.md) |
| 54 | +- **Testing**: [`contributing/testing/`](contributing/testing/), [`e2e-testing/`](e2e-testing/) |
| 55 | +- **Code Quality**: [`contributing/linting.md`](contributing/linting.md), [`development-principles.md`](development-principles.md) |
| 56 | + |
| 57 | +### For Maintainers |
| 58 | + |
| 59 | +- **Decisions**: [`decisions/`](decisions/) (30+ ADRs) |
| 60 | +- **Features**: [`features/`](features/) (active and planned features) |
| 61 | +- **Refactoring**: [`refactors/`](refactors/) (ongoing improvements) |
| 62 | +- **Roadmap**: [`roadmap.md`](roadmap.md) |
| 63 | + |
| 64 | +### For Researchers/Architects |
| 65 | + |
| 66 | +- **Research**: [`research/`](research/) (testing strategies, UX patterns, MVVM analysis) |
| 67 | +- **Analysis**: [`analysis/`](analysis/) (code structure analysis) |
| 68 | +- **Vision**: [`vision-infrastructure-as-software.md`](vision-infrastructure-as-software.md) |
| 69 | + |
| 70 | +## 🎯 Quick Navigation by Task |
| 71 | + |
| 72 | +### "I want to..." |
| 73 | + |
| 74 | +| Task | Start Here | |
| 75 | +| ------------------------- | ------------------------------------------------------------------------------ | |
| 76 | +| Start using the deployer | [`user-guide/README.md`](user-guide/README.md) | |
| 77 | +| Contribute code | [`contributing/README.md`](contributing/README.md) | |
| 78 | +| Understand architecture | [`codebase-architecture.md`](codebase-architecture.md) | |
| 79 | +| Add code to correct layer | [`contributing/ddd-layer-placement.md`](contributing/ddd-layer-placement.md) | |
| 80 | +| Run E2E tests | [`e2e-testing/README.md`](e2e-testing/README.md) | |
| 81 | +| Write unit tests | [`contributing/testing/unit-testing.md`](contributing/testing/unit-testing.md) | |
| 82 | +| Understand a decision | [`decisions/README.md`](decisions/README.md) | |
| 83 | +| Plan a new feature | [`features/README.md`](features/README.md) | |
| 84 | +| Fix a CI issue | [`github-actions-issues/README.md`](github-actions-issues/README.md) | |
| 85 | +| Work with templates | [`contributing/templates.md`](contributing/templates.md) | |
| 86 | +| Handle errors properly | [`contributing/error-handling.md`](contributing/error-handling.md) | |
| 87 | +| Organize Rust modules | [`contributing/module-organization.md`](contributing/module-organization.md) | |
| 88 | + |
| 89 | +--- |
| 90 | + |
| 91 | +## 📋 Complete Documentation Inventory |
| 92 | + |
| 93 | +<details> |
| 94 | +<summary><strong>📁 Root Level Documentation (Click to Expand)</strong></summary> |
| 95 | + |
| 96 | +| File | Description | |
| 97 | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
| 98 | +| [`codebase-architecture.md`](codebase-architecture.md) | Comprehensive overview of DDD architecture, layer structure (Domain, Application, Infrastructure, Presentation), and module organization | |
| 99 | +| [`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.) | |
| 100 | +| [`deployment-overview.md`](deployment-overview.md) | High-level overview of deployment lifecycle states, command relationships, and state transitions with visual diagrams | |
| 101 | +| [`development-principles.md`](development-principles.md) | Core principles: Observability, Testability, User Friendliness, Actionability - guiding all development decisions and code quality standards | |
| 102 | +| [`documentation.md`](documentation.md) | Guide explaining documentation organization structure, categories, and where to place different types of documentation | |
| 103 | +| [`linting.md`](linting.md) | Linting tool usage, configuration files, and quick commands for maintaining code quality across all file types | |
| 104 | +| [`roadmap.md`](roadmap.md) | Development roadmap with epics, features, and implementation status tracking | |
| 105 | +| [`roadmap-questions.md`](roadmap-questions.md) | Open questions and discussions about roadmap priorities and future development direction | |
| 106 | +| [`tofu-lxd-configuration.md`](tofu-lxd-configuration.md) | OpenTofu configuration details for LXD provider setup and usage | |
| 107 | +| [`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 | |
| 108 | +| [`vm-providers.md`](vm-providers.md) | Overview of supported VM providers (LXD, Hetzner) and provider architecture | |
| 109 | + |
| 110 | +</details> |
| 111 | + |
| 112 | +<details> |
| 113 | +<summary><strong>🤝 Contributing Guidelines (18 documents) (Click to Expand)</strong></summary> |
| 114 | + |
| 115 | +Essential guides: DDD layer placement, module organization, error handling, templates, commit process, testing conventions |
| 116 | + |
| 117 | +**Key Documents:** |
| 118 | + |
| 119 | +- [`contributing/README.md`](contributing/README.md) - Quick reference guide to all contribution documentation |
| 120 | +- [`contributing/ddd-layer-placement.md`](contributing/ddd-layer-placement.md) - **CRITICAL**: Rules for placing code in correct DDD layers |
| 121 | +- [`contributing/module-organization.md`](contributing/module-organization.md) - **CRITICAL**: Module organization and Rust import patterns |
| 122 | +- [`contributing/templates.md`](contributing/templates.md) - **CRITICAL**: Tera template syntax and registration |
| 123 | +- [`contributing/error-handling.md`](contributing/error-handling.md) - Error handling principles |
| 124 | +- [`contributing/commit-process.md`](contributing/commit-process.md) - Commit process and pre-commit checks |
| 125 | +- [`contributing/testing/unit-testing.md`](contributing/testing/unit-testing.md) - Unit testing conventions |
| 126 | + |
| 127 | +</details> |
| 128 | + |
| 129 | +<details> |
| 130 | +<summary><strong>📋 Architectural Decision Records (30+ ADRs) (Click to Expand)</strong></summary> |
| 131 | + |
| 132 | +Index at [`decisions/README.md`](decisions/README.md) - All architectural decisions documented with context, rationale, and consequences |
| 133 | + |
| 134 | +**Recent Notable Decisions:** |
| 135 | + |
| 136 | +- Cloud-Init SSH Port Configuration with Reboot |
| 137 | +- Single Docker Image for Sequential E2E Command Testing |
| 138 | +- Register Command SSH Port Override |
| 139 | +- Migration to AGENTS.md Standard |
| 140 | +- ReentrantMutex Pattern for UserOutput |
| 141 | +- Environment Variable Prefix (`TORRUST_TD_`) |
| 142 | +- Command State Return Pattern |
| 143 | +- Actionable Error Messages |
| 144 | +- LXD VMs over Containers |
| 145 | +- Tera Minimal Templating Strategy |
| 146 | + |
| 147 | +</details> |
| 148 | + |
| 149 | +<details> |
| 150 | +<summary><strong>🧪 E2E Testing Documentation (8 documents) (Click to Expand)</strong></summary> |
| 151 | + |
| 152 | +Architecture, running tests, manual testing, troubleshooting, test suites, contributing, advanced techniques |
| 153 | + |
| 154 | +**Key Documents:** |
| 155 | + |
| 156 | +- [`e2e-testing/README.md`](e2e-testing/README.md) - Overview and quick start |
| 157 | +- [`e2e-testing/running-tests.md`](e2e-testing/running-tests.md) - How to run automated tests |
| 158 | +- [`e2e-testing/manual-testing.md`](e2e-testing/manual-testing.md) - Manual testing guide |
| 159 | +- [`e2e-testing/troubleshooting.md`](e2e-testing/troubleshooting.md) - Common issues and solutions |
| 160 | +- [`e2e-testing/architecture.md`](e2e-testing/architecture.md) - Testing architecture and design |
| 161 | + |
| 162 | +</details> |
| 163 | + |
| 164 | +<details> |
| 165 | +<summary><strong>✨ Feature Development (7+ features) (Click to Expand)</strong></summary> |
| 166 | + |
| 167 | +Feature specs, templates, 5 active features |
| 168 | + |
| 169 | +**Active Features:** |
| 170 | + |
| 171 | +- Hetzner Provider Support |
| 172 | +- Import Existing Instances |
| 173 | +- Hybrid Command Architecture |
| 174 | +- Linter Auto-fix |
| 175 | +- Linter Parallel Execution (deferred) |
| 176 | +- Environment State Management (refactoring) |
| 177 | +- Progress Reporting in Application Layer |
| 178 | + |
| 179 | +See [`features/README.md`](features/README.md) for complete list and templates. |
| 180 | + |
| 181 | +</details> |
| 182 | + |
| 183 | +<details> |
| 184 | +<summary><strong>📖 User Documentation (Click to Expand)</strong></summary> |
| 185 | + |
| 186 | +Complete user guide with command documentation, provider guides, quick start, logging, template customization |
| 187 | + |
| 188 | +**Key Documents:** |
| 189 | + |
| 190 | +- [`user-guide/README.md`](user-guide/README.md) - Complete user guide |
| 191 | +- [`user-guide/quick-start.md`](user-guide/quick-start.md) - Quick start guide |
| 192 | +- [`user-guide/commands/`](user-guide/commands/) - Individual command documentation (8 commands) |
| 193 | +- [`user-guide/providers/`](user-guide/providers/) - Provider-specific guides (LXD, Hetzner) |
| 194 | + |
| 195 | +</details> |
| 196 | + |
| 197 | +<details> |
| 198 | +<summary><strong>🛠️ Technology Documentation (4 documents) (Click to Expand)</strong></summary> |
| 199 | + |
| 200 | +Ansible, LXD, OpenTofu, SSH keys - installation, setup, and usage |
| 201 | + |
| 202 | +- [`tech-stack/ansible.md`](tech-stack/ansible.md) |
| 203 | +- [`tech-stack/lxd.md`](tech-stack/lxd.md) |
| 204 | +- [`tech-stack/opentofu.md`](tech-stack/opentofu.md) |
| 205 | +- [`tech-stack/ssh-keys.md`](tech-stack/ssh-keys.md) |
| 206 | + |
| 207 | +</details> |
| 208 | + |
| 209 | +<details> |
| 210 | +<summary><strong>🔧 Technical Deep Dives (2 documents) (Click to Expand)</strong></summary> |
| 211 | + |
| 212 | +- [`technical/template-system-architecture.md`](technical/template-system-architecture.md) - **CRITICAL**: Template system architecture and Project Generator pattern |
| 213 | +- [`technical/type-erasure-pattern.md`](technical/type-erasure-pattern.md) - Type erasure pattern for Environment states |
| 214 | + |
| 215 | +</details> |
| 216 | + |
| 217 | +<details> |
| 218 | +<summary><strong>🔬 Research Notes (Click to Expand)</strong></summary> |
| 219 | + |
| 220 | +Ansible testing strategy, Docker vs LXD, E2E testing, UX patterns, MVVM analysis, presentation layer organization |
| 221 | + |
| 222 | +**Key Documents:** |
| 223 | + |
| 224 | +- [`research/ansible-testing-strategy.md`](research/ansible-testing-strategy.md) - Comprehensive Ansible testing strategy |
| 225 | +- [`research/docker-vs-lxd-ansible-testing.md`](research/docker-vs-lxd-ansible-testing.md) - Technology comparison |
| 226 | +- [`research/UX/`](research/UX/) - UX research documents (console output patterns, logging strategy) |
| 227 | +- [`research/mvvm-pattern-analysis/`](research/mvvm-pattern-analysis/) - MVVM pattern research |
| 228 | + |
| 229 | +</details> |
| 230 | + |
| 231 | +<details> |
| 232 | +<summary><strong>🔄 Other Documentation Categories (Click to Expand)</strong></summary> |
| 233 | + |
| 234 | +**Refactoring Plans:** |
| 235 | + |
| 236 | +- [`refactors/README.md`](refactors/README.md) - Process, templates, active/completed refactorings |
| 237 | + |
| 238 | +**Implementation Plans:** |
| 239 | + |
| 240 | +- [`implementation-plans/README.md`](implementation-plans/README.md) - Step-by-step plans for complex changes |
| 241 | + |
| 242 | +**Issue Documentation:** |
| 243 | + |
| 244 | +- [`issues/`](issues/) - Templates for epics, issues, and specifications |
| 245 | + |
| 246 | +**CI/CD Troubleshooting:** |
| 247 | + |
| 248 | +- [`github-actions-issues/README.md`](github-actions-issues/README.md) - GitHub Actions runner issues |
| 249 | + |
| 250 | +**Code Analysis:** |
| 251 | + |
| 252 | +- [`analysis/presentation-layer/`](analysis/presentation-layer/) - Presentation layer structure analysis |
| 253 | + |
| 254 | +</details> |
| 255 | + |
| 256 | +--- |
| 257 | + |
| 258 | +## 📊 Statistics |
| 259 | + |
| 260 | +- **Total Documentation Files**: 160+ markdown files |
| 261 | +- **Major Categories**: 13 top-level directories |
| 262 | +- **ADRs**: 30+ architectural decisions documented |
| 263 | +- **Active Features**: 5 features in various stages |
| 264 | +- **Test Documentation**: Comprehensive E2E testing guides |
| 265 | +- **Contribution Guides**: 18 contributor-focused documents |
0 commit comments