- Add complete dark mode system with theme context and toggle - Implement dark mode toggle component in navigation menu - Add client-side routing with SSR-safe signal handling - Fix language selector styling for better dark mode compatibility - Add documentation system with mdBook integration - Improve navigation menu with proper external/internal link handling - Add comprehensive project documentation and configuration - Enhance theme system with localStorage persistence - Fix arena panic issues during server-side rendering - Add proper TypeScript configuration and build optimizations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
119 lines
3.7 KiB
Rust
119 lines
3.7 KiB
Rust
//! Startup Simple - Ejemplo de uso del wizard para una startup simple
|
|
//!
|
|
//! Este ejemplo muestra cómo una startup con requirements simples
|
|
//! se beneficia más del wizard simple (Rust puro)
|
|
|
|
use std::collections::HashMap;
|
|
|
|
/// Configuración típica de una startup simple
|
|
#[derive(Debug)]
|
|
pub struct StartupConfig {
|
|
pub app_name: String,
|
|
pub environment: String,
|
|
pub features: Vec<String>,
|
|
pub database_url: String,
|
|
pub port: u16,
|
|
}
|
|
|
|
/// Ejemplo de configuración con wizard simple
|
|
pub fn configure_with_simple_wizard() -> StartupConfig {
|
|
// ✅ VENTAJAS del wizard simple para startup:
|
|
|
|
// 1. Rápido de configurar (< 2 minutos)
|
|
// 2. Sin dependencias extra
|
|
// 3. Binario pequeño para despliegue
|
|
// 4. Configuración predecible
|
|
|
|
println!("=== Configuración Simple para Startup ===");
|
|
|
|
// Requirements típicos de startup:
|
|
let typical_features = vec![
|
|
"auth".to_string(), // Autenticación básica
|
|
"content-db".to_string(), // Base de datos simple
|
|
"email".to_string(), // Notificaciones básicas
|
|
];
|
|
|
|
// Configuración directa, sin complicaciones
|
|
StartupConfig {
|
|
app_name: "MyStartup".to_string(),
|
|
environment: "dev".to_string(),
|
|
features: typical_features,
|
|
database_url: "sqlite:startup.db".to_string(),
|
|
port: 3030,
|
|
}
|
|
}
|
|
|
|
/// Lo que NO necesita una startup simple
|
|
pub fn what_startup_doesnt_need() {
|
|
println!("❌ Una startup simple NO necesita:");
|
|
println!("- Configuraciones dinámicas complejas");
|
|
println!("- Scripts personalizables");
|
|
println!("- Múltiples flujos de configuración");
|
|
println!("- Integración con 20+ servicios externos");
|
|
println!("- Lógica de configuración que cambia diariamente");
|
|
}
|
|
|
|
/// Métricas de rendimiento para startup
|
|
pub fn performance_metrics() {
|
|
println!("📊 Métricas con wizard simple:");
|
|
println!("- Tiempo de configuración: ~90 segundos");
|
|
println!("- Tamaño del binario: +200KB");
|
|
println!("- Tiempo de startup: <100ms");
|
|
println!("- Memoria adicional: <1MB");
|
|
}
|
|
|
|
/// Flujo típico de configuración para startup
|
|
pub fn typical_startup_flow() {
|
|
println!("🚀 Flujo típico de configuración:");
|
|
println!("1. Seleccionar features básicas (auth, db, email)");
|
|
println!("2. Configurar base de datos SQLite");
|
|
println!("3. Configurar email con servicio gratuito");
|
|
println!("4. Usar defaults para todo lo demás");
|
|
println!("5. Desplegar rápidamente");
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn test_startup_config() {
|
|
let config = configure_with_simple_wizard();
|
|
|
|
// Validar que tiene lo esencial
|
|
assert!(config.features.contains(&"auth".to_string()));
|
|
assert!(config.features.contains(&"content-db".to_string()));
|
|
assert!(config.features.contains(&"email".to_string()));
|
|
|
|
// Validar que no tiene features complejas
|
|
assert!(!config.features.contains(&"rbac".to_string()));
|
|
assert!(!config.features.contains(&"metrics".to_string()));
|
|
assert!(!config.features.contains(&"tls".to_string()));
|
|
}
|
|
|
|
#[test]
|
|
fn test_simple_is_fast() {
|
|
let start = std::time::Instant::now();
|
|
let _config = configure_with_simple_wizard();
|
|
let duration = start.elapsed();
|
|
|
|
// Debe ser muy rápido
|
|
assert!(duration.as_millis() < 100);
|
|
}
|
|
}
|
|
|
|
// Ejemplo de uso
|
|
fn main() {
|
|
println!("🎯 Ejemplo: Startup Simple");
|
|
println!("==========================");
|
|
|
|
let config = configure_with_simple_wizard();
|
|
println!("✅ Configuración generada: {:?}", config);
|
|
|
|
what_startup_doesnt_need();
|
|
performance_metrics();
|
|
typical_startup_flow();
|
|
|
|
println!("\n🎉 Resultado: Wizard simple es PERFECTO para este caso");
|
|
}
|