chore: fix content

This commit is contained in:
Jesús Pérez 2025-12-18 01:58:49 +00:00
parent 5f51b5f2c4
commit b3bd0acb7e
Signed by: jesus
GPG Key ID: 9F243E355E0BC939
4 changed files with 84 additions and 907 deletions

116
README.md
View File

@ -8,13 +8,18 @@ A powerful, standalone library and CLI tool for creating interactive forms and p
## 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
- **Declarative Forms**: TOML-based UI definitions with fragments & composition
- **Dynamic Logic**: Conditional fields, smart defaults, real-time validation
- **Multi-Language Support**: Fluent (.ftl) translations with automatic locale detection
- **Multiple Output Formats**: JSON, YAML, TOML, and Nickel output
- **Zero Runtime Dependencies**: Core library runs anywhere, no external tools required
- **3 Backends**: CLI (inquire), TUI (ratatui), Web (axum)
### Integration Key
- **Type-Safe Schemas**: Bidirectional [Nickel](https://nickel-lang.org) integration to manage configurations and settings files.<br />
It requires [Nickel CLI](https://nickel-lang.org/getting-started/)
## Quick Start
@ -43,7 +48,10 @@ just test::all
cargo run --example form
```
### CLI Example
## Backends at a Glance
### CLI Backend (inquire)
Interactive terminal prompts for scripting and automation.
```bash
# Simple prompt
@ -56,23 +64,60 @@ typedialog select "Choose role" Admin User Guest
typedialog text "Email" --format json
```
### TUI Example
**Use for:** Scripts, CI/CD pipelines, server tools, piping between tools
**See:** [`examples/04-backends/cli/`](examples/04-backends/cli/)
Interactive multi-panel form:
### TUI Backend (ratatui)
Full terminal UI with keyboard navigation and mouse support.
```bash
cargo run -p typedialog-tui --example form_with_autocompletion
```
### Web Example
**Use for:** Interactive dashboards, system administration tools, complex forms
**See:** [`examples/04-backends/tui/`](examples/04-backends/tui/)
Start HTTP server:
### Web Backend (axum)
HTTP server with browser-based forms.
```bash
cargo run -p typedialog-web -- --config config/web/dev.toml
# Open http://localhost:3000
```
**Use for:** SaaS platforms, public forms, mobile-friendly interfaces
**See:** [`examples/04-backends/web/`](examples/04-backends/web/)
**Complete backend guide:** [Backend-Specific Examples](examples/04-backends/)
## Nickel Integration
**Type-safe configuration management** with bidirectional Nickel schema support.
Generate interactive forms from Nickel schemas, collect user input, and produce validated configuration output:
```bash
# 1. Define schema in Nickel
nickel eval config.ncl > schema.toml
# 2. Run interactive form
typedialog form schema.toml --backend tui
# 3. Get validated output in any format
# JSON, YAML, TOML, or back to Nickel with type preservation
```
**Benefits:**
- Schema validation before/after collection
- Type contracts enforced throughout pipeline
- Documentation embedded in schemas
- Deterministic configuration generation
**Learn more:**
- [Nickel Integration Guide](docs/CONFIGURATION.md#nickel-integration)
- [Examples: 06-integrations/nickel/](examples/06-integrations/nickel/)
- [Nickel Lang Documentation](https://nickel-lang.org/)
## Documentation
Complete documentation in [`docs/`](docs/):
@ -83,21 +128,23 @@ Complete documentation in [`docs/`](docs/):
| [**DEVELOPMENT.md**](docs/DEVELOPMENT.md) | Development workflows |
| [**BUILD.md**](docs/BUILD.md) | Building & cross-compilation |
| [**RELEASE.md**](docs/RELEASE.md) | Release process |
| [**CONFIGURATION.md**](docs/CONFIGURATION.md) | Backend configuration |
| [**CONFIGURATION.md**](docs/CONFIGURATION.md) | Backend & Nickel configuration |
## Examples
Complete working examples in [`examples/`](examples/):
- [**01-basic**](examples/01-basic/) - Getting started
- [**02-advanced**](examples/02-advanced/) - Conditional logic
- [**03-styling**](examples/03-styling/) - Custom appearance
- [**04-backends**](examples/04-backends/) - Backend-specific examples
- [**05-fragments**](examples/05-fragments/) - Reusable components
- [**06-integrations**](examples/06-integrations/) - Nickel & i18n
- [**09-templates**](examples/09-templates/) - Production templates
| Category | Path | Contents |
|----------|------|----------|
| **Getting Started** | [01-basic](examples/01-basic/) | Form syntax, sections, validation |
| **Advanced Features** | [02-advanced](examples/02-advanced/) | Conditional logic, dynamic fields |
| **Styling** | [03-styling](examples/03-styling/) | Themes, borders, visual design |
| **Backends** | [04-backends](examples/04-backends/) | CLI, TUI, Web implementations |
| **Composition** | [05-fragments](examples/05-fragments/) | Reusable components |
| **Integrations** | [06-integrations](examples/06-integrations/) | [Nickel](examples/06-integrations/nickel/), [i18n](examples/06-integrations/i18n/) |
| **Production** | [09-templates](examples/09-templates/) | Real-world use cases |
See [examples/README.md](examples/README.md) for complete guide.
**Quick start:** [examples/README.md](examples/README.md)
## Development
@ -187,12 +234,14 @@ typedialog/
## Key Technologies
- **Rust** - Type-safe systems language
- **inquire** - Interactive prompt library
- **Ratatui** - TUI framework
- **Axum** - Web framework
- **TOML** - Configuration language
- **just** - Command orchestration
- **Rust** - Type-safe systems language
- **inquire** - Interactive prompt library (CLI backend)
- **Ratatui** - Terminal UI framework (TUI backend)
- **Axum** - Web framework (Web backend)
- **Nickel** - Type-safe configuration language (schema integration)
- **TOML** - Form and configuration language
- **Fluent** - Multi-language translation system
- **just** - Command orchestration
## Commands at a Glance
@ -231,21 +280,20 @@ just distro::package-release # Prepare release
- Docker (or cargo-cross)
### Optional Tools
- **Nickel CLI** - For type-safe schemas
- **cargo-watch** - For hot-reload
- **cargo-cross** - For cross-compilation
- **Nickel CLI** - For developing type-safe Nickel schemas (used with `06-integrations/nickel/` examples)
- **cargo-watch** - For hot-reload during development
- **cargo-cross** - For cross-compilation to other platforms
See [docs/INSTALLATION.md](docs/INSTALLATION.md) for setup.
## License & Compliance
- **Project License**: [MIT](LICENSE)
- **Dependency Licenses**: [LICENSE.md](LICENSE.md)
- **Dependency List**: [DEPENDENCIES.md](DEPENDENCIES.md)
- **SBOM (SPDX)**: [SBOM.spdx.json](SBOM.spdx.json)
- **SBOM (CycloneDX)**: [SBOM.cyclonedx.json](SBOM.cyclonedx.json)
- **Dependency SBOM (SPDX)**: [SBOM.spdx.json](SBOM.spdx.json) - ISO/IEC 5962:2021
- **Dependency SBOM (CycloneDX)**: [SBOM.cyclonedx.json](SBOM.cyclonedx.json) - ECMA standard
- **Regenerate SBOMs**: `just distro::generate-sbom`
All dependencies are compatible with MIT license.
All dependencies are compatible with MIT license. Audit vulnerabilities: `just ci::audit`
## Getting Help

View File

@ -1,512 +0,0 @@
# Project Definition - typedialog
**Version**: 0.1.0
**Date**: 2025-12-17
**Status**: Production-ready, pre-publicación
---
## Resumen Ejecutivo
**Nombre Actual**: typedialog v0.1.0
**Categoría**: Interactive Configuration Management System
**Estado**: Production-ready, pre-publicación
**Arquitectura**: Multi-backend Rust workspace (4 crates)
**Propósito Central**: Facilitar la gestión de configuración para aplicaciones, proyectos y scripts mediante inputs interactivos (prompts individuales o forms completos), con integración bidireccional a Nickel para settings tipados y validados.
**Diferenciador Único**: Único sistema en el mercado que integra Nickel schemas → Interactive collection → Multi-format output (YAML/JSON/TOML) con preservación de type contracts.
---
## 1. Identidad del Proyecto
### 1.1 Estado Actual
- **Nombre**: typedialog
- **Origen**: Extraído de `nu_plugin_inquire` (plugin de Nushell)
- **Etimología**: "form" + "inquire" (referencia al crate `inquire`)
- **Versión**: 0.1.0
- **Madurez**: Production-ready, 80+ tests passing, documentación completa
- **Publicación**: No publicado en crates.io aún
### 1.2 Evolución Histórica
```
nu_plugin_inquire (Nushell plugin)
typedialog (standalone library extraction)
+ CLI backend (inquire-based)
+ Nickel integration (bidirectional)
+ TUI backend (ratatui)
+ Web backend (axum + HTMX)
Current: Multi-backend configuration management system
```
**Puntos de Inflexión**:
1. Separación de Nushell → biblioteca standalone
2. Adición Nickel integration → type-safe configuration focus
3. Múltiples backends → multi-context positioning
### 1.3 Descripción Técnica Precisa
**Definición Formal**: Sistema de gestión de configuración interactiva que facilita la recolección, validación y transformación de settings mediante diálogo con el usuario, actuando como puente entre Nickel schemas tipados y formatos de configuración estándar (YAML/JSON/TOML), soportando múltiples interfaces (CLI/TUI/Web) para adaptarse a diferentes contextos de uso.
**Componentes Core**:
- Form/Prompt engine con 8 tipos de inputs
- Nickel parser y code generator (bidirectional)
- Backend abstraction layer (trait-based)
- Template engine (Tera para metaprogramming)
- i18n system (Fluent con en-US, es-ES)
- Multi-format serialization (JSON/YAML/TOML/Nickel)
---
## 2. Propósito y Problema que Resuelve
### 2.1 Problema Space Completo
**Problema Principal**: La configuración de aplicaciones, proyectos y scripts requiere:
1. Recolección interactiva de datos del usuario
2. Validación tipada de inputs
3. Transformación entre formatos (schemas → forms → configs)
4. Adaptación a diferentes contextos (CLI scripts, TUI setup, Web interfaces)
5. Organización con componentes, templates, documentación
**Problemas Secundarios**:
- Herramientas existentes limitadas a un solo backend (CLI-only o Web-only)
- No hay integración con lenguajes de configuración tipados (Nickel, KCL)
- Forms completos ineficientes para capturar un solo valor
- Prompts individuales no escalables para setup complejos
- Falta de preservación de type contracts entre transformaciones
- Configuración manual propensa a errores de tipo
### 2.2 Solución Propuesta
**Enfoque Único**:
```
Nickel Schema (typed, validated, documented)
↓ [nickel-to-form]
TOML Form Definition (declarative, reusable)
↓ [interactive collection]
User Dialog (CLI/TUI/Web según contexto)
↓ [validation + transformation]
Validated Output (JSON/YAML/TOML/Nickel)
↓ [consumption]
Application/Script/System
```
**Flexibilidad Clave**:
- **Single Prompt**: `nickelconf prompt --type password "API Key"` → captura un valor
- **Complete Form**: `nickelconf form setup.toml --backend tui` → multi-field wizard
- **Nickel Workflow**: Schema → Form → Config con type preservation
### 2.3 Casos de Uso Concretos
#### 1. Application Settings
- **User**: Developer configurando nueva app
- **Escenario**: Primera instalación de app Rust, necesita DB credentials, API keys, feature flags
- **Solución**: Nickel schema define settings → TUI form para setup inicial → config.yaml generado
- **Valor**: Type-safety, validación, documentación incluida en schema
#### 2. Script Inputs
- **User**: DevOps engineer escribiendo Nushell script de deploy
- **Escenario**: Script necesita environment, region, instance type
- **Solución**: CLI prompts individuales integrados en script → validated JSON output
- **Valor**: Inputs validados on-the-fly, integración natural con script flow
#### 3. Project Configuration
- **User**: Tech lead inicializando nuevo proyecto
- **Escenario**: Proyecto necesita 20+ settings (CI/CD, testing, deployment, monitoring)
- **Solución**: Nickel schema organizado con components → TUI complete form → project.toml
- **Valor**: Configuración completa guiada, validación, defaults inteligentes
#### 4. Web-Based Setup
- **User**: SaaS admin configurando tenant
- **Escenario**: Configuración de tenant via web interface
- **Solución**: Same TOML form → Web backend → Settings guardados en DB
- **Valor**: Mismo form definition, diferente contexto de uso
#### 5. Infrastructure as Code
- **User**: SRE provisionando recursos cloud
- **Escenario**: Crear configuración Terraform/Nickel para nueva infra
- **Solución**: Interactive prompts → Nickel output con contracts → Terraform consumption
- **Valor**: Type-safe IaC generation, validation antes de apply
---
## 3. Arquitectura y Tecnología
### 3.1 Tech Stack Completo
**Core Language**: Rust 2021, MSRV 1.70+
**Crate Structure** (Workspace):
```
typedialog/
├── crates/
│ ├── typedialog-core/ # Core library + backend trait
│ │ ├── form engine (8 input types)
│ │ ├── FormBackend trait
│ │ ├── Nickel integration modules
│ │ ├── Template engine (Tera)
│ │ ├── i18n system (Fluent)
│ │ └── Serialization (serde ecosystem)
│ ├── typedialog/ # CLI binary
│ │ └── InquireBackend impl
│ ├── typedialog-tui/ # TUI binary
│ │ └── RatatuiBackend impl
│ └── typedialog-web/ # Web server binary
│ └── AxumBackend impl
```
**Dependencies Clave**:
- `inquire` - Terminal prompts (CLI backend)
- `ratatui` + `crossterm` - Terminal UI (TUI backend)
- `axum` + `tower` - Web server (Web backend)
- `serde` ecosystem - Serialization (JSON/YAML/TOML)
- `tera` - Template engine (Jinja2-like)
- `fluent` + `fluent-bundle` - i18n/localization
- `clap` - CLI argument parsing
- `chrono` - Date/time handling
**Backend Pattern** (Trait-based abstraction):
```rust
pub trait FormBackend {
fn execute_field(&mut self, field: &FormField) -> Result<Value>;
fn execute_form_complete(&mut self, form: &Form) -> Result<HashMap<String, Value>>;
}
// Implementations:
impl FormBackend for InquireBackend { ... } // CLI
impl FormBackend for RatatuiBackend { ... } // TUI
impl FormBackend for AxumBackend { ... } // Web
```
### 3.2 Características Técnicas Distintivas
#### 1. Nickel Integration (Bidirectional)
- **nickel-to-form**: Parse Nickel schemas → Extract metadata → Generate TOML forms
- **form-to-nickel**: Convert form results → Generate Nickel code with contracts
- **Contract Preservation**: `std.string.NonEmpty`, `std.number.between` mantenidos
- **Component Support**: Nickel imports, merging, templates soportados
#### 2. Multi-Backend Architecture
- **Same Form Definition**: Un TOML form funciona en CLI, TUI, Web
- **Identical Output**: Todos los backends producen mismo JSON/YAML/TOML
- **Display Modes**: FieldByField (step-by-step) o Complete (all at once)
- **Backend Selection**: `--backend cli|tui|web` en runtime
#### 3. Form Engine Features
- **8 Input Types**: text, confirm, select, multiselect, password, custom, editor, date
- **Conditional Logic**: Fields con `depends_on` para flujo dinámico
- **Validation**: Regex, length, range, custom validators
- **Defaults**: Static, dynamic (desde otras respuestas), computed
- **Grouping**: Semantic grouping para mejor UX
#### 4. i18n System
- **Fluent-based**: `.ftl` files para traducciones
- **Languages**: en-US (default), es-ES
- **Scopes**: Form UI, field labels, validation messages, help text
- **Fallback**: Graceful degradation a inglés
#### 5. Template System
- **Tera Engine**: Jinja2-like syntax para metaprogramming
- **Nickel Templates**: `.ncl.j2` files para código generation
- **Variable Substitution**: Form results inyectados en templates
- **Conditionals/Loops**: Lógica de template para código complejo
### 3.3 Formatos Soportados
**Input Formats**:
- TOML (form definitions)
- Nickel (schemas para form generation)
**Output Formats**:
- JSON (app configs, API consumption)
- YAML (configs, Kubernetes, Ansible)
- TOML (Rust configs, general settings)
- Nickel (type-safe configs con contracts)
- Plain text (simple key=value)
---
## 4. Análisis de Mercado y Posicionamiento
### 4.1 Target Audience Detallado
**Audiencia Primaria**:
1. **Application Developers** (40%)
- Stack: Rust, Go, Python apps
- Need: Settings management con type-safety
- Pain: Manual config files propensa a errores
- Value: Nickel schemas + interactive collection + validated output
2. **Script Creators** (30%)
- Stack: Nushell, Bash, Python scripts
- Need: Interactive inputs para scripts
- Pain: Validación manual, error handling repetitivo
- Value: Validated prompts con minimal code
3. **DevOps/SRE Engineers** (20%)
- Stack: Terraform, Kubernetes, Ansible
- Need: Interactive IaC generation
- Pain: Complex configs, no validation hasta runtime
- Value: Type-safe config generation, Nickel contracts
4. **Project/Team Leads** (10%)
- Stack: Project setup, team onboarding
- Need: Consistent project configuration
- Pain: Manual setup guides, config drift
- Value: Reproducible project setup con forms
**Audiencia Secundaria**:
- CLI tool developers agregando interactive features
- SaaS developers para user onboarding/config
- System administrators para server setup wizards
### 4.2 Competitive Landscape
**Categorías de Competidores**:
1. **Terminal Prompt Libraries**: `inquire`, `dialoguer`, `questionary`
- Gap: Solo prompts, no forms. No type-safety. No multi-backend.
2. **Form Libraries**: HTML forms, `react-hook-form`
- Gap: Web-only. No CLI/TUI. No Nickel integration.
3. **Configuration Management**: Ansible, Terraform
- Gap: IaC-specific. No general-purpose forms. No type preservation.
4. **Schema Languages**: JSON Schema, Nickel, KCL
- Gap: Schema definition only, no interactive collection.
**Competitive Matrix**:
| Feature | typedialog | inquire | HTML forms | Ansible | Nickel |
|---------|-------------|---------|------------|---------|--------|
| Interactive prompts | ✅ | ✅ | ❌ | ⚠️ | ❌ |
| Complete forms | ✅ | ❌ | ✅ | ⚠️ | ❌ |
| Multi-backend | ✅ (3) | ❌ | ❌ | ❌ | ❌ |
| Type-safe schemas | ✅ | ❌ | ❌ | ⚠️ | ✅ |
| Bidirectional schema | ✅ | ❌ | ❌ | ❌ | ❌ |
| Multi-format output | ✅ (4) | ❌ | ⚠️ | ⚠️ | ✅ (1) |
| i18n support | ✅ | ❌ | ⚠️ | ✅ | ❌ |
| Template system | ✅ | ❌ | ❌ | ✅ | ✅ |
| Declarative forms | ✅ | ❌ | ✅ | ⚠️ | N/A |
### 4.3 Value Propositions Completo
**Para Developers**:
- ✅ Type-safe configuration desde día 1 (Nickel schemas)
- ✅ Menos código de validación manual (schemas auto-validan)
- ✅ Documentación incluida en schemas (contratos son docs)
- ✅ Multi-format output (una fuente, múltiples consumidores)
**Para DevOps/SRE**:
- ✅ Interactive IaC generation (menos errores de config)
- ✅ Validación antes de apply (Nickel contracts)
- ✅ Reproducible setup (TOML forms versionables)
- ✅ Script integration (CLI prompts en pipelines)
**Para Organizations**:
- ✅ Consistent configuration (same forms across projects)
- ✅ Reduced onboarding time (guided setup wizards)
- ✅ Auditability (form definitions + results traceable)
- ✅ i18n support (international teams)
**Unique Selling Points**:
1. **Nickel Integration** - Único en mercado
2. **Multi-Backend Flexibility** - Mismo form, diferentes contextos
3. **Forms + Prompts** - No forzado a elegir uno u otro
4. **Type-Safe Pipeline** - Contracts preserved end-to-end
5. **Production-Ready** - i18n, templates, validación, docs
---
## 5. Capacidades y Características
### 5.1 Functional Capabilities
**Input Collection**:
- ✅ 8 tipos de prompts (text, password, select, multiselect, confirm, custom, editor, date)
- ✅ Forms declarativos en TOML
- ✅ Conditional logic (depends_on)
- ✅ Dynamic defaults (computed fields)
- ✅ Validation (regex, range, length, custom)
- ✅ Help text y documentación inline
**Backend Support**:
- ✅ CLI - inquire-based terminal prompts (stdin fallback)
- ✅ TUI - ratatui full-screen interface (3-panel layout, Tab navigation)
- ✅ Web - axum + HTMX browser forms (RESTful API)
- ✅ Display modes: FieldByField, Complete
**Nickel Workflow**:
- ✅ nickel-to-form: Schema → TOML form generation
- ✅ form execution: Interactive collection
- ✅ form-to-nickel: Results → Nickel code generation
- ✅ Contract preservation: Type constraints maintained
- ✅ Component support: Imports, merging, templates
**Output Formats**:
- ✅ JSON (structured data, API consumption)
- ✅ YAML (configs, k8s, ansible)
- ✅ TOML (rust configs, settings)
- ✅ Nickel (type-safe configs)
- ✅ Text (simple key=value)
**i18n & Templates**:
- ✅ Fluent-based localization (en-US, es-ES)
- ✅ Tera template engine
- ✅ Nickel template metaprogramming (.ncl.j2)
- ✅ Variable substitution
- ✅ Conditional rendering
### 5.2 Non-Functional Capabilities
**Performance**:
- Fast compilation (Rust, release build <30s)
- Low memory footprint (CLI <5MB, TUI <10MB)
- Minimal startup time (<100ms)
**Reliability**:
- 80+ passing tests (unit + integration)
- Type-safe Rust (no runtime crashes)
- Graceful error handling
- Fallback behaviors (stdin, default values)
**Usability**:
- Intuitive TOML form syntax
- Clear error messages
- Help text contextual
- i18n for international users
**Maintainability**:
- Modular workspace structure
- Clean trait-based architecture
- Comprehensive documentation
- Example forms included
**Portability**:
- Cross-platform (Linux, macOS, Windows)
- Single binary distribution
- No runtime dependencies
- Docker support
---
## 7. Métricas y Success Criteria
### 7.1 Technical Metrics
**Code Quality**:
- Test coverage > 80%
- Zero clippy warnings (enforce)
- Clean compilation all features
- Documentation coverage > 90%
**Performance**:
- Binary size < 15MB (release)
- Startup time < 100ms
- Memory usage < 20MB (TUI)
- Form rendering < 50ms
### 7.2 Adoption Metrics
**Community**:
- GitHub stars > 100 (first 6 months post-publish)
- crates.io downloads > 1000/month
- Active issues/PRs
- Contributor growth
**Usage**:
- Example forms created by users
- Integration stories shared
- Blog posts/tutorials written
- Conference talks
### 7.3 Quality Metrics
**Reliability**:
- Bug reports < 5/month
- Critical bugs = 0
- Response time < 48h
- Fix time < 7 days (non-critical)
**User Satisfaction**:
- Positive feedback ratio > 80%
- Feature request alignment
- Documentation clarity
- Ease of use reports
---
## 8. Roadmap y Future Considerations
### 8.1 Immediate Focus (v0.1.x)
**Naming Decision**:
- Decide: nickelconf vs nickeltalk vs keep typedialog
- Execute: Rename if chosen
- Update: All documentation and messaging
**Stabilization**:
- Bug fixes from early users
- Documentation improvements
- Example forms expansion
- Performance optimizations
### 8.2 Near-term Enhancements (v0.2.x)
**Nickel Enhancements**:
- Deeper schema introspection
- More contract types supported
- Component template library
- Schema validation improvements
**Backend Improvements**:
- TUI navigation enhancements
- Web backend styling/theming
- CLI colored output options
- Performance optimizations
**New Features**:
- Form composition (reusable sections)
- Field dependencies (advanced logic)
- Custom validators library
- Plugin system for custom fields
### 8.3 Long-term Vision
**Ecosystem**:
- Form marketplace (shared forms)
- IDE integrations (VSCode extension)
- CI/CD integrations
- Cloud service (hosted forms)
**Technology**:
- KCL integration (like Nickel)
- CUE language support
- GraphQL schema support
- Database schema integration
**Beyond Configuration**:
- Survey/questionnaire system
- User onboarding workflows
- Admin panel generation
- API client generation
---
## Conclusión
typedialog es un proyecto maduro y bien posicionado que resuelve un problema real en la gestión de configuración. Su diferenciador único - la integración bidireccional con Nickel combinada con múltiples backends - lo posiciona de manera única en el mercado.
El próximo paso crítico es una decisión de naming estratégica que refuerce esta posición única y comunique claramente el valor propuesto al mercado target.

View File

@ -1,359 +0,0 @@
# Project Naming and Positioning Analysis
**Version**: 1.0
**Date**: 2025-12-17
**Status**: Ready for decision
---
## Executive Summary
The current name **"typedialog"** undersells the project's unique value proposition. A strategic rename would better communicate the distinctive capabilities to the target market.
**Key Finding**: Nickel integration is THE unique differentiator. Any new name should prominently feature Nickel while maintaining flexibility for the multi-backend and interactive aspects.
---
## Problems with "typedialog"
### 1. Backend-Specific Reference
- Name tied to `inquire` crate (just one of three backends)
- Misleading now that project has ratatui (TUI) and axum (Web) backends
- Doesn't reflect the multi-backend architecture innovation
### 2. Form-Centric Positioning
- "form" emphasizes only forms, not prompts/single inputs
- Inaccurate: project equally supports individual prompts and complete forms
- Creates false expectation of form-only capability
### 3. Missing Nickel Integration
- **CRITICAL**: No communication of THE unique differentiator
- Nickel integration is unique in the market - no competitor combines this
- Name should signal this exclusive feature
### 4. Generic Sound
- "typedialog" sounds like "just another form library"
- Fails to communicate type-safety, configuration focus, or multi-backend capability
- Doesn't differentiate from competitive offerings (dialoguer, inquire, etc.)
### 5. Hidden Value Propositions
- No hint at: interactive dialog, bridge between schemas/formats, facilitator role
- Configuration management focus not obvious
- App/project scope not apparent
---
## Strategic Positioning Requirements
### Dimensions to Communicate (by priority)
1. **Nickel Integration** (MUST) - THE unique differentiator, único en mercado
2. **Interactivo/Diálogo** (SHOULD) - Facilita mediante conversación con usuario
3. **Bridge** (SHOULD) - Puente entre schemas, formatos, humano-máquina
4. **Configuration/Settings** (SHOULD) - Core purpose
5. **Flexibility** (NICE) - Forms Y prompts - no solo uno
6. **Type-safety** (NICE) - Quality attribute from Nickel
7. **Facilitador** (NICE) - Simplifica la gestión
8. **Wide scope** (NICE) - Apps, scripts, DevOps - no limitado
9. **Memorable** (MUST) - Pronounceable, distinctive
**Key Constraint**: Es imposible capturar TODOS los aspectos en un nombre. El nombre debe priorizar los top 2-3 elementos y el positioning/messaging cubre el resto.
---
## Top 3 Finalists
### Option 1: **nickelconf** ⭐ PRIMARY RECOMMENDATION
**Etymology**: "nickel" (core tech) + "conf" (configuration)
#### Coverage Analysis
```
Nickel integration ✅✅ Explicit (primary identifier)
Interactivo/Diálogo ❌ Messaging-covered
Bridge ❌ Messaging-covered
Configuration/Settings ✅✅ Explicit (primary purpose)
Flexibility ✅ Neutral (conf = flexible container)
Type-safety ✅ Implicit (via Nickel)
Facilitador ⚠️ Neutral
Wide scope ✅ No limita dominio
Memorable ✅✅ Short, pronounceable, clear
────────────────────────────────────────────────
SCORE: 7/9 explicit + 2/9 via messaging = STRONG
```
#### Strengths
- Directly signals Nickel integration (THE key differentiator)
- Clear configuration/settings focus
- Not limited to "forms" (conf is neutral, covers prompts too)
- Short, memorable, pronounceable, technical but accessible
- Professional, credible positioning
- Clean crate names: `nickelconf-core`, `nickelconf-cli`, `nickelconf-tui`, `nickelconf-web`
#### Weaknesses
- Interactive/dialog aspect relies on messaging
- Bridge concept must be conveyed in positioning/docs
#### Positioning
> "Interactive configuration powered by Nickel - bridging schemas and settings"
#### Key Messaging
- "Dialoga con el usuario para configurar apps y proyectos con tipos validados"
- "Bridge: Nickel schemas → Interactive prompts/forms → YAML/JSON/TOML output"
- "Facilita settings tipados - single prompts o forms completos según necesidad"
- "CLI para scripts, TUI para setup, Web para interfaces - mismo config, diferentes contextos"
#### Use Case Examples
- **Single prompt**: `nickelconf prompt --type password "API Key"` → captura un valor
- **Complete form**: `nickelconf form app-config.toml --backend tui` → multi-field setup
- **Nickel workflow**: `nickelconf nickel-to-form schema.ncl` → generates form from Nickel schema
- **Script integration**: Nushell/Bash scripts call `nickelconf` for validated inputs
- **Multi-format output**: Same input → JSON/YAML/TOML/Nickel depending on use
---
### Option 2: **nickeltalk** ⭐ STRONG ALTERNATIVE
**Etymology**: "nickel" (core tech) + "talk" (dialogue/interaction)
#### Coverage Analysis
```
Nickel integration ✅✅ Explicit (primary identifier)
Interactivo/Diálogo ✅✅ Explicit ("talk" = dialogue)
Bridge ⚠️ Implied (talk = communication bridge)
Configuration/Settings ⚠️ Messaging-required
Flexibility ✅ Neutral (talk cubre prompts y forms)
Type-safety ✅ Implicit (via Nickel)
Facilitador ✅ Implicit (talk = facilita comunicación)
Wide scope ✅ No limita dominio
Memorable ✅ Short, pronounceable, friendly
────────────────────────────────────────────────
SCORE: 7/9 explicit + 2/9 via messaging = STRONG
```
#### Strengths
- Captures both top priorities: Nickel + Interactive/Dialog
- "Talk" enfatiza el aspecto de diálogo/conversación con usuario
- Friendly, approachable, less intimidating than "conf"
- Still short and memorable
- Implies facilitation and bridge (communication is connection)
- More distinctive than nickeLconf (fewer "talk" tools in ecosystem)
#### Weaknesses
- "Talk" might sound less serious/technical than "conf"
- Configuration purpose less obvious (needs messaging)
- Could be mistaken for chat/AI tool rather than config tool
- Slightly less clear positioning
#### Positioning
> "Talk to Nickel - Interactive type-safe configuration through dialogue"
#### Key Messaging
- "Conversa con Nickel para configurar apps y proyectos"
- "Dialog-driven configuration: prompts, forms, type-safe settings"
- "Bridge schemas and formats through interactive dialogue"
- "Nickel schemas → Interactive talk → YAML/JSON/TOML output"
#### Best For
- If emphasizing UX and developer experience over technical positioning
- Projects that want friendlier, more approachable branding
- Organizations focused on ease-of-use
---
### Option 3: **nickelbridge**
**Etymology**: "nickel" (core tech) + "bridge" (connection/intermediary)
#### Coverage Analysis
```
Nickel integration ✅✅ Explicit
Interactivo/Diálogo ⚠️ Implied (bridge connects human & machine)
Bridge ✅✅ Explicit (primary metaphor)
Configuration/Settings ⚠️ Messaging-required
Flexibility ✅ Neutral
Type-safety ✅ Implicit
Facilitador ✅ Implicit (bridge = facilitates)
Wide scope ✅ No limita dominio
Memorable ⚠️ Longer (3 syllables, but clear)
────────────────────────────────────────────────
SCORE: 6/9 explicit + 3/9 via messaging = GOOD
```
#### Strengths
- Explicitly captures bridge metaphor (schemas ↔ formats, human ↔ machine)
- Nickel prominently featured
- Professional, technical positioning
- Clearly a facilitator/connector
#### Weaknesses
- "Bridge" is overused in tech naming (less distinctive)
- Longer word (12 characters vs 10 for nickelconf)
- Interactive aspect less obvious
- Configuration purpose needs heavy messaging
#### NOT RECOMMENDED
Less distinctive, longer, loses some positioning clarity compared to top 2 options.
---
## Decision Matrix
| Criterion | nickelconf | nickeltalk | nickelbridge |
|-----------|-----------|-----------|----------|
| Nickel prominence | ✅✅ | ✅✅ | ✅✅ |
| Interactive aspect | ❌ | ✅✅ | ⚠️ |
| Config focus | ✅✅ | ⚠️ | ⚠️ |
| Memorability | ✅✅ | ✅ | ✅ |
| Distinctiveness | ✅ | ✅✅ | ⚠️ |
| Professional tone | ✅✅ | ✅ | ✅✅ |
| Approachability | ✅ | ✅✅ | ⚠️ |
| Future-proofing | ✅ | ✅ | ✅ |
---
## Decision Framework
### Choose nickelconf if:
- Configuration/settings focus is most important to your positioning
- Want maximum technical credibility with developers
- Emphasize type-safety and contracts as primary value
- Prefer professional/serious tone
- Target: Infrastructure, DevOps, technical users
### Choose nickeltalk if:
- Interactive/dialog aspect is most important
- Want friendly, approachable, UX-focused positioning
- Emphasize ease-of-use and developer experience
- Prefer conversational/accessible tone
- Target: Broader audience, emphasize usability
### Choose nickelbridge if:
- Bridge/connector metaphor is critical to your story
- Emphasize interoperability (schemas ↔ formats) over other aspects
- Professional but with strong facilitator positioning
- Comfortable with longer name
---
## Recommendation: nickelconf ⭐
### Rationale
1. **Captures core identity**: Nickel (unique differentiator) + Config (core purpose) = clear positioning
2. **Professional positioning**: Credible with technical audiences (developers, DevOps, architects)
3. **Easy to explain**: "Type-safe configuration with Nickel" - immediately clear
4. **Messaging flexibility**: Interactive, bridge, facilitator aspects easily conveyed in docs/positioning
5. **Technical soundness**: Appeals to type-conscious developers and infrastructure engineers
6. **Future-proof**: Name doesn't limit scope if expanding to other schema languages later
### Alternative: nickeltalk
Strong alternative if your organization prioritizes:
- User experience and approachability
- Developer delight and friendly positioning
- Market differentiation through accessibility
Both are viable. The choice depends on whether you lead with **technical credibility** (nickelconf) or **user experience** (nickeltalk).
---
## Implementation Path (if renaming)
### Complexity: Complex
- Full workspace rename with dependencies
- Import path updates
- Binary artifact renames
- Documentation overhaul
### Tasks Required
1. Workspace `Cargo.toml` rename (precedes member crate renames)
2. All internal imports across crates
3. Binary artifacts in build scripts
4. All documentation files
5. Configuration paths (if hardcoded)
6. Examples and templates
7. Repository name (GitHub)
8. Migration guide for any existing users
### Risks
- Breaking existing users (unlikely given v0.1.0 status)
- Loss of existing references/documentation links
- SEO reset if already indexed
### Mitigations
1. Version bump to 0.2.0 (signals breaking change)
2. Maintain `typedialog` as deprecated alias
3. Create migration guide
4. Comprehensive search/replace validation
### Validation
```bash
# Must pass before release
cargo check --all-targets --all-features
cargo test --all-targets --all-features
cargo build --release --all-targets
cargo clippy -- -D warnings
# Smoke tests
nickelconf --version
nickelconf-tui --version
nickelconf-web --version
```
---
## Alternative: Enhanced Positioning (Keep typedialog)
If rebranding costs outweigh benefits:
### Approach
1. Rewrite README with multi-backend focus
2. Emphasize Nickel integration prominently
3. Clarify not just an inquire wrapper
4. Document multi-context use cases
5. Create positioning explainer
### Challenges
- Name still references one backend (confusing)
- Harder to communicate innovation without name change
- Missing strategic positioning opportunity
### Benefits
- Zero technical disruption
- No migration costs
- Maintains existing references
- Faster execution
---
## Naming Alternatives Analyzed (not recommended)
### Considered but Rejected
- **formstack**: Exists as company (Formstack.com), trademark risk
- **formulate**: Good name but loses Nickel prominence
- **omniform**: Premium positioning but longer, less clear
- **formkit**: Conflicts with Vue.js FormKit library
- **formspec**: Clear but generic, doesn't emphasize Nickel
- **dialogconf**: Loses Nickel in name (critical mistake)
- **confkit**: Generic, doesn't differentiate with Nickel
---
## Conclusion
**nickelconf** is the recommended path forward. It clearly communicates the two most important aspects of the project (Nickel + Configuration) while remaining short, memorable, and technical.
The secondary messaging around interactive dialog, bridge functionality, and facilitator role can be effectively conveyed through positioning statements, documentation, and examples.
This strategic rename would:
1. Immediately signal the unique market position
2. Attract the right target audience
3. Support long-term branding and differentiation
4. Enable clearer communication of value proposition
5. Position the project for successful market launch
**Decision needed**: nickelconf vs nickeltalk vs keep typedialog
The choice between nickelconf and nickeltalk depends on whether you prioritize **technical credibility** or **user experience** in your positioning.

View File

@ -12,8 +12,8 @@ mod ci "justfiles/ci.just" # CI/CD pipeline (validate, test, build)
mod distro "justfiles/distro.just" # Distribution & packaging (release, cross-compile)
# === SHARED VARIABLES ===
WORKSPACE_ROOT := justfile_directory()
CRATES := "typedialog-core typedialog typedialog-tui typedialog-web"
# WORKSPACE_ROOT := justfile_directory()
# CRATES := "typedialog-core typedialog typedialog-tui typedialog-web"
# === ORCHESTRATION RECIPES ===