513 lines
17 KiB
Markdown
513 lines
17 KiB
Markdown
|
|
# 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.
|