Skip to content

🎉 Announcing Dimtrovich Console - An Extension Layer for adhocore/cli #134

@dimtrovich

Description

@dimtrovich

Hi @adhocore and @kodie , and @everyone in the community! 👋

I hope you're all doing well. As a contributor to this amazing project, I've come to deeply appreciate the solid foundation that adhocore/cli provides. Its clean architecture and robust core have been a joy to work with.

Over the past few weeks, I've been working on a project that builds upon this foundation without modifying the core library. I'm excited to share it with you today! Initially, I designed it for my “in-house” framework, but I decided it would be better to make it independent (like adhocore/cli) so that other people could benefit from it.

🚀 Introducing Dimtrovich Console

Dimtrovich Console is an extension layer that adds a wealth of new features on top of adhocore/cli while keeping the core completely untouched. Think of it as a feature-rich wrapper that enhances the developer experience with additional capabilities.

✨ Key Features Added

  • Rich Output Components: Beautiful alerts, badges, and formatted output
  • Advanced Progress Indicators: Enhanced progress bars with statistics, spinners with callbacks
  • ASCII Art Support: Built-in fonts and tools for creating ASCII banners
  • Interactive Menus: Full-featured interactive selection menus
  • Data Visualization: ASCII charts (bar, pie), heatmaps, and grid displays
  • Theming System: 8 built-in themes (dark, light, solarized, monokai, nord, dracula, github)
  • Internationalization: Built-in translations (French included) with easy extensibility
  • PSR-3 Logging Integration: Seamless console output + file logging combined
  • Timeline View: Visual event tracking with status indicators
  • Animation Support: Frame-based animations for visual effects
  • Desktop Notifications: Cross-platform system notifications

🔧 How It Works

The extension works by:

  • Extending the core classes (Command, Application, etc.) without modifying them
  • Adding traits that provide additional functionality
  • Maintaining 100% compatibility with existing adhocore/cli commands
  • Using composition over inheritance where appropriate

📦 Example

use Dimtrovich\Console\Command;

class MyCommand extends Command
{
    public function handle()
    {
        // All your existing adhocore/cli methods work!
        $this->io()->info('Processing...');
        
        // Plus new features!
        $this->withSpinner(function() {
            // Long task
            return $this->processData();
        }, 'Processing data...');
        
        $this->alert()->success('Task completed!', 'SUCCESS', '');
        
        $this->chart(['PHP' => 70, 'JS' => 20, 'Python' => 10], 'pie');
    }
}

💡 Why I Built This

While adhocore/cli provides an excellent foundation, I found myself repeatedly implementing the same higher-level features across different projects. Rather than cluttering the core with opinionated features, I decided to create this extension layer that:

  1. Respects the core - No modifications to the original library
  2. Adds value - Provides features commonly needed in CLI applications
  3. Remains optional - Use only what you need, when you need it
  4. Maintains compatibility - Your existing commands continue to work unchanged

🔗 Links

🤝 Special Thanks

@adhocore, thank you for creating such a solid foundation and for your guidance on the project. Your work has made this extension possible.

@kodie, thank you for your contributions and insights that have helped shape the community.

💬 Feedback Welcome!

I'd love to hear your thoughts, suggestions, or any feedback you might have. This project is meant to complement adhocore/cli, not compete with it, and I'm open to ideas that could make it even more useful for the community.

If anyone wants to contribute themes, translations, or features, PRs are very welcome!

Best regards,
Dimitrovich

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions