Skip to content

Scaffolding for main app - 8/9 tasks complete (89%)Β #2

@josecelano

Description

@josecelano

Scaffolding for main app

Epic Issue - Tracks the implementation of core scaffolding for the main CLI application.

Parent Issue: #1 (Roadmap)


πŸ“‹ Overview

This epic tracks the implementation of foundational infrastructure for the production CLI application, including logging setup, command structure, and user experience improvements.


🎯 Tasks

Core Scaffolding

  • 1.1 Setup logging - Issue #3 βœ… Completed

    • Setup logging for production CLI - PR #4
    • Remove ANSI codes from file logging - Issue #5, PR #7
  • 1.2 Create command torrust-tracker-deployer destroy to destroy an environment βœ… Completed

  • 1.3 Refactor extract shared code between testing and production for app bootstrapping βœ… Completed

  • 1.4 Improve command to use better abstraction to handle presentation layer βœ… COMPLETED - EPIC #154

    • βœ… Completed November 12, 2025: Complete reorganization of src/presentation/ layer into a four-layer MVC architecture
    • βœ… Established clean separation: Input β†’ Dispatch β†’ Controllers β†’ Views
    • βœ… Standard terminology: controllers (not commands), views (not user_output)
    • βœ… Container integration for dependency injection
    • βœ… Eliminated duplicate factory patterns
  • 1.5 Create command torrust-tracker-deployer create to create a new environment - EPIC #34 βœ… Completed

    • We need to decide how the user will provide config values.
    • output using println and eprintln
  • 1.6 Create command torrust-tracker-deployer provision to provision VM infrastructure (UI layer only) - Issue #174 βœ… Completed

    • Note: The App layer ProvisionCommand is already implemented, this task focuses on the console subcommand interface
    • Implementation calls the existing ProvisionCommand business logic
    • Handles user input, validation, and output presentation
  • 1.7 Create command torrust-tracker-deployer configure to configure provisioned infrastructure (UI layer only) - Issue #180 βœ… Completed

    • Note: The App layer ConfigureCommand is already implemented, this task focuses on the console subcommand interface
    • Implementation calls the existing ConfigureCommandHandler business logic
    • Handles user input, validation, and output presentation
    • Enables transition from "provisioned" to "configured" state via CLI
  • 1.8 Create command torrust-tracker-deployer test to verify deployment infrastructure (UI layer only) - Issue #188 βœ… Completed

    • Note: The App layer TestCommandHandler is already implemented, this task focuses on the console subcommand interface
    • Implementation calls the existing TestCommandHandler business logic
    • Handles user input, validation, and output presentation
    • Enables verification of deployment state via CLI (cloud-init, Docker, Docker Compose)
  • 1.9 Add levels of verbosity as described in the UX research

    • Implement -v, -vv, -vvv flags for user-facing output
    • See docs/research/UX/ for detailed UX research
    • Issue: TBD (to be created when ready)

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.


πŸ”— Related Documentation


πŸ“ Notes


βœ… Acceptance Criteria

This epic is complete when:

  • All 9 tasks are implemented and merged β†’ Progress: 8/9 tasks completed (89%)
  • Main CLI application has proper logging βœ…
  • Core commands (create, provision, destroy) are functional βœ…
  • Configure command is accessible via CLI βœ… (Task 1.7)
  • Test command is accessible via CLI βœ… (Task 1.8)
  • User output verbosity system is implemented (Task 1.9)
  • Presentation layer abstractions are in place βœ… (Task 1.4)
  • Code is shared between testing and production where appropriate βœ… (Task 1.3)
  • All documentation is updated βœ…

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions