Standout
A CLI framework for Rust that enforces separation between logic and presentation.
Test your data. Render your view.
use ;
use ArgMatches;
use Serialize;
// Test the handler directly—no stdout capture needed
What is Standout?
Standout combines two standalone libraries into a cohesive framework:
- standout-dispatch — Execution pattern where handlers return data, renderers produce output
- standout-render — Terminal rendering with templates, themes, and adaptive styles
The framework provides the glue: clap integration, --output flag handling, auto-dispatch from derive macros, and the AppBuilder configuration API.
Why Standout?
CLI code that mixes logic with println! is impossible to unit test. With Standout:
- Handlers return structs, not strings—test them like any other function
- Multiple output modes from the same handler: rich terminal, JSON, YAML, CSV
- MiniJinja templates with hot reload during development
- CSS/YAML themes with automatic light/dark mode support
- Incremental adoption—migrate one command at a time
Quick Start
[]
= "2.1"
= { = "4", = ["derive"] }
= { = "1", = ["derive"] }
use ;
use ;
use Subcommand;
Documentation
- Book: standout.magik.works
Framework Topics
- App Configuration — AppBuilder API
- Output Modes — --output flag and format handling
Crate Documentation
- standout-render — Templates, themes, tabular layouts
- standout-dispatch — Handlers, hooks, command routing
API Reference
- API Documentation — Full API reference
Standalone Crates
Each component can be used independently:
- standout-render — Use the rendering system without the framework
- standout-dispatch — Use the execution pattern with your own renderer
License
MIT