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