- Remove LICENSE.md and docs/DEPENDENCIES.md (redundant with SBOM JSON) - Remove scripts/generate_sbom.py (replaced by cargo-sbom) - Update distro::generate-sbom recipe to use cargo-sbom CLI - Generates SPDX 2.3 and CycloneDX 1.4 formats natively - Eliminates Python dependency for SBOM generation
TypeDialog
A powerful, standalone library and CLI tool for creating interactive forms and prompts using the inquire crate.
Features
- 3 Backends: CLI, TUI (Terminal UI), Web (HTTP)
- 8 Prompt Types: text, confirm, select, multi-select, password, custom, editor, date
- TOML-based Forms: Declarative UI definitions
- Dynamic Logic: Conditional fields, smart defaults, real-time updates
- Multi-language: Fluent (.ftl) and TOML translations
- Multiple Outputs: JSON, YAML, TOML, text formats
- Zero Dependencies: Works everywhere, no Nushell required
Quick Start
Installation
See docs/INSTALLATION.md for detailed setup.
Requirements:
- Rust 1.70+ - Install
- just -
cargo install just(orbrew install just)
Build & Run
# Clone
git clone https://github.com/anthropics/typedialog.git
cd typedialog
# Build
just build::default
# Test
just test::all
# Run example
cargo run --example form
CLI Example
# Simple prompt
typedialog text "Enter your name"
# With options
typedialog select "Choose role" Admin User Guest
# Output as JSON
typedialog text "Email" --format json
TUI Example
Interactive multi-panel form:
cargo run -p typedialog-tui --example form_with_autocompletion
Web Example
Start HTTP server:
cargo run -p typedialog-web -- --config config/web/dev.toml
# Open http://localhost:3000
Documentation
Complete documentation in docs/:
| Document | Purpose |
|---|---|
| INSTALLATION.md | Prerequisites & setup |
| DEVELOPMENT.md | Development workflows |
| BUILD.md | Building & cross-compilation |
| RELEASE.md | Release process |
| CONFIGURATION.md | Backend configuration |
Examples
Complete working examples in examples/:
- 01-basic - Getting started
- 02-advanced - Conditional logic
- 03-styling - Custom appearance
- 04-backends - Backend-specific examples
- 05-fragments - Reusable components
- 06-integrations - Nickel & i18n
- 09-templates - Production templates
See examples/README.md for complete guide.
Development
Use just for all development tasks:
# Show available commands
just --list
# Format, lint, test
just check-all
# Build & package
just distro::build-release
just distro::create-package
# Full CI/CD
just ci::full
See docs/DEVELOPMENT.md for details.
Building & Distribution
Build from Source
just build::release
Binaries in target/release/
Create Distribution Package
just distro::build-release
just distro::create-package
just distro::create-checksums
Package includes binaries, configs, and installers.
See docs/BUILD.md for complete guide.
Install Distributed Release
# Linux/macOS
curl -fsSL https://github.com/anthropics/typedialog/releases/download/latest/install.sh | bash
# Windows PowerShell
irm https://github.com/anthropics/typedialog/releases/download/latest/install.ps1 | iex
See docs/RELEASE.md for release workflow.
Configuration
Pre-configured settings for each backend and environment:
config/
├── cli/ # default, dev, production
├── tui/ # default, dev, production
└── web/ # default, dev, production
See docs/CONFIGURATION.md for all options.
Project Structure
typedialog/
├── crates/
│ ├── typedialog-core/ # Core library
│ ├── typedialog/ # CLI binary
│ ├── typedialog-tui/ # TUI binary
│ └── typedialog-web/ # Web binary
├── config/ # Configuration files
├── examples/ # Working examples
├── scripts/ # Build automation
├── installers/ # Installation scripts
├── docs/ # Documentation
├── justfile # Command orchestration
└── Cargo.toml # Workspace manifest
Key Technologies
- Rust - Type-safe systems language
- inquire - Interactive prompt library
- Ratatui - TUI framework
- Axum - Web framework
- TOML - Configuration language
- just - Command orchestration
Commands at a Glance
# Development
just fmt # Format code
just lint # Lint code
just test::all # Run tests
just dev::watch # Watch & rebuild
just dev::docs # Generate docs
# Building
just build::default # Debug build
just build::release # Release build
just distro::cross # Cross-compile
# CI/CD
just ci::full # Complete pipeline
just check-all # Format + lint + test
# Distribution
just distro::build-release # Release build
just distro::create-package # Package
just distro::create-checksums # Checksums
just distro::package-release # Prepare release
System Requirements
Minimum
- Rust 1.70+
- 4GB RAM
- 2GB disk space
For Cross-Compilation
- Docker (or cargo-cross)
Optional Tools
- Nickel CLI - For type-safe schemas
- cargo-watch - For hot-reload
- cargo-cross - For cross-compilation
See docs/INSTALLATION.md for setup.
License & Compliance
- Project License: MIT
- Dependency Licenses: LICENSE.md
- Dependency List: DEPENDENCIES.md
- SBOM (SPDX): SBOM.spdx.json
- SBOM (CycloneDX): SBOM.cyclonedx.json
All dependencies are compatible with MIT license.
Getting Help
- Documentation - Start with docs/README.md
- Examples - Check examples/README.md
- Issues - Open on GitHub
Contributing
Contributions welcome! See documentation for setup and guidelines.
Ready to get started? → docs/INSTALLATION.md