GitHub Issue: #1 - Roadmap
This document outlines the development roadmap for the Torrust Tracker Deployer project. Each task is marked with:
[ ]- Not completed[x]- Completed
When starting work on a new feature:
- Create the feature documentation in the
docs/features/folder and commit it - Open an issue on GitHub linking to the feature folder in the repository
- Add the new issue as a child issue of the main EPIC issue
Note: See
docs/features/README.mdfor detailed conventions and process guide for creating new features.
Epic Issue: #2 - Scaffolding for main app
- 1.1 Setup logging - Issue #3 ✅ Completed
- 1.2 Create command
torrust-tracker-deployer destroyto destroy an environment ✅ Completed- Parent EPIC: Implement
destroyCommand - GitHub Issue #8 - Split into two child EPICs for incremental delivery:
- Child EPIC #9: App Layer Destroy Command - Core business logic
- Child EPIC #10: UI Layer Destroy Command - CLI interface
- Parent EPIC: Implement
- 1.3 Refactor extract shared code between testing and production for app bootstrapping
- 1.4 Improve command to use better abstraction to handle presentation layer ✅ Completed
- User output architecture improvements implemented
- Epic #102 completed
- Message trait system, sink abstraction, and theme support added
- Folder module structure with focused submodules
- 1.5 Create command
torrust-tracker-deployer createto create a new environment ✅ Completed- EPIC: Implement Create Environment Command - GitHub Issue #34
- 1.6 Create command
torrust-tracker-deployer provisionto provision VM infrastructure (UI layer only)- Note: The App layer ProvisionCommand is already implemented, this task focuses on the console subcommand interface
- Implementation should call the existing ProvisionCommand business logic
- Handle user input, validation, and output presentation
- 1.7 Add levels of verbosity as described in the UX research
Note: See docs/research/UX/ for detailed UX research that will be useful to implement the features in this section.
Future Enhancement: The torrust-tracker-deployer deploy porcelain command (intelligent orchestration of plumbing commands) will be implemented after the core plumbing commands are stable. See docs/features/hybrid-command-architecture/ for the complete specification.
- 2.1 Add Hetzner provider support
Note: These are internal app layer commands (like ProvisionCommand or ConfigureCommand), not console commands. The approach is to slice by functional services rather than deployment stages - we fully deploy a working stack from the beginning and incrementally add new services.
-
3.1 Finish ConfigureCommand ✅ Completed - Epic #16
-
3.2 Implement ReleaseCommand (App layer business logic)
- Core business logic for deploying Torrust Tracker application files and configuration
- Template generation and file deployment to provisioned infrastructure
-
3.3 Add ReleaseCommand and RunCommand with slices
- 3.3.1 Run only a docker compose configuration with hello-world docker image
- 3.3.2 Add MySQL to docker compose stack
- 3.3.3 Add Torrust Tracker to docker compose stack
- 3.3.4 Add Prometheus to docker compose stack
- 3.3.5 Add Grafana to docker compose stack
Notes:
- Each service will require new templates, template Rust wrappers, environment options, etc.
- 4.1 Create docker image for the deployer to use it without needing to install the dependencies (OpenTofu, Ansible, etc)
- Mount data and build dirs when running it.
- 5.1
torrust-tracker-deployer status- Check environment and service status - 5.2
torrust-tracker-deployer test- Run application tests
Note: The test console subcommand is already partially implemented.
- 6.1 Add HTTPS support for HTTP tracker
- 6.2 Add HTTPS support for tracker API
- 6.3 Add HTTPS support for Grafana
- 7.1 Implement database backups for MySQL
- 7.2 Implement configuration backups
- 7.3 Create recovery procedures documentation
- This roadmap will be linked to an EPIC issue on GitHub for tracking progress
- Each major feature should have corresponding documentation in
docs/features/before implementation begins