sysrot-hub
Version:
CLI de nueva generación para proyectos Next.js 14+ con IA multi-modelo, Web3 integration, internacionalización completa y roadmap realista 2025-2026
576 lines (482 loc) • 20 kB
Markdown
# 📋 DOCUMENTACIÓN COMPLETA - sysrot-hub
## 🚨 ANÁLISIS DE BUGS DETECTADOS
### 🔴 BUGS CRÍTICOS
#### 1. **ERROR CRÍTICO: Parámetros incorrectos en createProject**
**Ubicación:** `cli.js:67` y `createProject.js:6`
```javascript
// ❌ INCORRECTO en cli.js línea 67:
await createProject(projectName);
// ❌ PROBLEMA en createProject.js línea 6-7:
async function createProject(options) {
const { projectName } = options; // Error: 'options' es un string, no un objeto
```
**Causa:** La función `createProject` espera recibir un objeto `options` con múltiples propiedades, pero se está llamando solo con el `projectName` como string.
**Solución:**
```javascript
// ✅ CORRECCIÓN en cli.js:
await createProject({
projectName,
typescript: true,
tailwindcss: true,
eslint: true,
database: 'MongoDB',
auth: true,
authProviders: ['Google', 'GitHub'],
roles: true,
middleware: true,
ai: true,
aiModels: ['GPT-4o (OpenAI)', 'Claude 3.5 (Anthropic)', 'Gemini Flash Pro (Google)'],
cloudinary: true,
blog: true,
mdxFeatures: true,
forms: true,
darkMode: true,
uiComponents: true,
framerMotion: true,
notifications: true,
examplePages: true,
exampleTypes: [
'Ejemplo de Autenticación',
'Ejemplo de IA (Multi-modelo)',
'Biblioteca de Componentes',
'Ejemplo de Carga de Imágenes',
'Ejemplo de Formularios',
'Ejemplo de Animaciones',
'Ejemplo de Notificaciones',
'Ejemplo de Base de Datos',
'Ejemplo de UI y Temas',
'Ejemplo de TypeScript'
],
envExample: true,
documentation: true
});
```
#### 2. **ERROR DE INCONSISTENCIA: useTranslation mal importado**
**Ubicación:** `template/components/ui/layout.tsx:4`
```typescript
// ❌ INCORRECTO:
import { useTranslation } from 'react-intl';
const { formatMessage } = useTranslation();
// ✅ CORRECCIÓN:
import { useTranslation } from '@/components/providers/intl-provider';
const { t } = useTranslation();
// Y cambiar todos los usos de formatMessage por t:
// ❌ formatMessage({ id: 'nav.home' })
// ✅ t('nav.home')
```
**Impacto:** Esto causa inconsistencias en el sistema de internacionalización y puede romper las traducciones.
### 🟡 BUGS MENORES
#### 3. **Versiones de dependencias desactualizadas**
**Ubicación:** `template/package.json`
```json
// ❌ Versión antigua:
"next": "^14.0.4"
// ✅ Versión actual según el template:
"next": "^14.2.17"
```
#### 4. **Inconsistencia en manejo de errores**
**Ubicación:** `createProject.js:521` (installDependencies)
```javascript
// ❌ PROBLEMA: Error no se propaga correctamente
} catch (error) {
spinner.fail('Error al instalar las dependencias');
console.error(chalk.red(`Error: ${error.message}`));
throw error; // Se lanza el error pero no se maneja adecuadamente arriba
}
```
---
## 📚 DOCUMENTACIÓN TÉCNICA COMPLETA
### 🏗️ ARQUITECTURA DEL PROYECTO
```
sysrot-hub/
├── 📄 cli.js # Punto de entrada del CLI
├── 📄 createProject.js # Motor de generación de proyectos
├── 📄 fix-nextconfig.js # Script de corrección automática
├── 📁 template/ # Plantilla base del proyecto
│ ├── 📁 components/ # Componentes React reutilizables
│ │ ├── 📁 ai/ # Sistema de IA multi-modelo
│ │ │ ├── ai-chat.tsx # Chat unificado de IA
│ │ │ ├── chat-model-selector.tsx # Selector de modelos
│ │ │ └── chat-message.tsx # Componente de mensajes
│ │ ├── 📁 auth/ # Sistema de autenticación
│ │ │ ├── login-form.tsx # Formulario de login
│ │ │ ├── register-form.tsx # Formulario de registro
│ │ │ └── user-avatar.tsx # Avatar del usuario
│ │ ├── 📁 providers/ # Context providers
│ │ │ ├── intl-provider.tsx # Proveedor de i18n
│ │ │ └── auth-provider.tsx # Proveedor de auth
│ │ ├── 📁 ui/ # Biblioteca de componentes UI
│ │ │ ├── button.tsx # Componente Button
│ │ │ ├── input.tsx # Componente Input
│ │ │ ├── layout.tsx # Layout principal
│ │ │ ├── theme-toggle.tsx # Switch de tema
│ │ │ └── language-switcher.tsx # Selector de idioma
│ │ └── 📁 upload/ # Sistema de carga de archivos
│ │ └── image-upload.tsx # Carga de imágenes
│ ├── 📁 lib/ # Utilidades y configuraciones
│ │ ├── auth.ts # Configuración NextAuth.js
│ │ ├── db.ts # Conexiones base de datos
│ │ ├── i18n.ts # Configuración i18n
│ │ ├── mdx.ts # Procesamiento MDX
│ │ ├── openai.ts # Cliente OpenAI
│ │ ├── anthropic.ts # Cliente Anthropic
│ │ ├── gemini.ts # Cliente Google Gemini
│ │ └── roles.ts # Sistema de roles
│ ├── 📁 pages/ # Páginas Next.js (Pages Router)
│ │ ├── 📁 api/ # API Routes
│ │ │ ├── 📁 auth/ # Endpoints de autenticación
│ │ │ ├── 📁 ai/ # Endpoints de IA
│ │ │ ├── 📁 upload/ # Endpoints de carga
│ │ │ └── 📁 database/ # Endpoints de BD
│ │ ├── 📁 blog/ # Sistema blog MDX
│ │ │ ├── index.tsx # Lista de artículos
│ │ │ └── [slug].tsx # Artículo individual
│ │ ├── 📁 ejemplos/ # Ejemplos funcionales
│ │ │ ├── index.tsx # Lista de ejemplos
│ │ │ ├── ai.tsx # Ejemplo de IA
│ │ │ ├── auth.tsx # Ejemplo de auth
│ │ │ ├── componentes.tsx # Biblioteca de componentes
│ │ │ ├── upload.tsx # Ejemplo de carga
│ │ │ ├── formularios.tsx # Ejemplo de formularios
│ │ │ ├── animaciones.tsx # Ejemplo de animaciones
│ │ │ ├── notificaciones.tsx # Ejemplo de notificaciones
│ │ │ ├── database.tsx # Ejemplo de BD
│ │ │ ├── ui-temas.tsx # Ejemplo de UI/temas
│ │ │ └── typescript.tsx # Ejemplo de TypeScript
│ │ ├── index.tsx # Página principal
│ │ ├── 404.tsx # Página de error 404
│ │ └── _app.tsx # Configuración de la app
│ ├── 📁 locales/ # Archivos de traducción
│ │ ├── es.json # Traducciones español (350+ claves)
│ │ └── en.json # Traducciones inglés (350+ claves)
│ ├── 📁 posts/ # Artículos MDX de ejemplo
│ │ ├── hello-world.mdx # Artículo de bienvenida
│ │ ├── nextjs-features.mdx # Características de Next.js
│ │ └── ai-integration.mdx # Integración de IA
│ ├── 📁 prisma/ # Esquemas de base de datos
│ │ └── schema.prisma # Esquema Prisma
│ ├── 📁 styles/ # Estilos globales
│ │ └── globals.css # CSS global con Tailwind
│ ├── 📁 types/ # Tipos TypeScript
│ │ ├── auth.ts # Tipos de autenticación
│ │ ├── ai.ts # Tipos de IA
│ │ └── global.ts # Tipos globales
│ ├── 📄 middleware.ts # Middleware de Next.js
│ ├── 📄 next.config.js # Configuración de Next.js
│ ├── 📄 tailwind.config.js # Configuración de Tailwind
│ ├── 📄 tsconfig.json # Configuración de TypeScript
│ ├── 📄 .env.example # Variables de entorno
│ ├── 📄 .eslintrc.json # Configuración ESLint
│ └── 📄 package.json # Dependencias del template
└── 📄 package.json # Configuración del CLI
```
### 🚀 STACK TECNOLÓGICO DETALLADO
#### 📋 Framework Core
| Tecnología | Versión | Propósito | Estado |
|------------|---------|-----------|---------|
| **Next.js** | 14.2.17+ | Framework React fullstack | ✅ Estable |
| **React** | 18.2.0+ | Biblioteca de UI | ✅ Estable |
| **TypeScript** | 5.3.3+ | Tipado estático | ✅ Estable |
| **Node.js** | 18+ | Runtime JavaScript | ✅ Requerido |
#### 🎨 Styling & UI
| Tecnología | Versión | Propósito | Estado |
|------------|---------|-----------|---------|
| **TailwindCSS** | 3.4.0+ | Framework CSS utility-first | ✅ Estable |
| **shadcn/ui** | Latest | Componentes accesibles | ✅ Estable |
| **Framer Motion** | 10.16.16+ | Animaciones fluidas | ✅ Estable |
| **Lucide React** | 0.312.0+ | Iconos SVG optimizados | ✅ Estable |
| **next-themes** | 0.2.1+ | Sistema de temas | ✅ Estable |
#### 🔐 Autenticación & Seguridad
| Tecnología | Versión | Propósito | Estado |
|------------|---------|-----------|---------|
| **NextAuth.js** | 4.24.5+ | Autenticación completa | ✅ Estable |
| **bcryptjs** | 2.4.3+ | Hash de contraseñas | ✅ Estable |
| **@auth/prisma-adapter** | 1.5.0+ | Adaptador para Prisma | ✅ Estable |
#### 🤖 Inteligencia Artificial
| Proveedor | Modelo | SDK | Versión | Estado |
|-----------|--------|-----|---------|---------|
| **OpenAI** | GPT-4o | openai | 4.24.1+ | ✅ Integrado |
| **Anthropic** | Claude 3.5 Sonnet | @anthropic-ai/sdk | 0.12.0+ | ✅ Integrado |
| **Google** | Gemini Flash Pro | @google/generative-ai | 0.2.0+ | ✅ Integrado |
| **DeepSeek** | R1 Reasoner | openai (compatible) | 4.24.1+ | 🚧 Próximamente |
#### 💾 Bases de Datos
| Base de Datos | Cliente/ORM | Versión | Estado |
|---------------|-------------|---------|---------|
| **MongoDB** | Mongoose | 8.0.3+ | ✅ Soportada |
| **Supabase** | @supabase/supabase-js | 2.39.1+ | ✅ Soportada |
| **Firebase** | Firebase Admin | 11.11.1+ | ✅ Soportada |
| **Prisma** | @prisma/client | 5.8.1+ | ✅ Soportada |
#### 🌍 Internacionalización
| Aspecto | Tecnología | Detalles |
|---------|------------|----------|
| **Framework** | React Intl | 6.6.2+ con TypeScript |
| **Idiomas** | Español, Inglés | 350+ claves de traducción |
| **Routing** | Next.js i18n | URLs SEO-friendly (/es/, /en/) |
| **Detección** | Browser API | Detección automática de idioma |
| **Fallbacks** | Español (default) | Sistema robusto de respaldos |
#### 📝 Sistema de Contenido
| Funcionalidad | Tecnología | Versión | Características |
|---------------|------------|---------|-----------------|
| **Markdown** | MDX | next-mdx-remote@4.4.1 | Markdown + JSX |
| **Sintaxis** | rehype-highlight | 7.0.0+ | Highlighting de código |
| **Navegación** | rehype-slug | 6.0.0+ | Links automáticos |
| **Procesamiento** | remark-gfm | 4.0.0+ | GitHub Flavored Markdown |
### 🛠️ INSTALACIÓN Y CONFIGURACIÓN
#### 📦 Instalación Rápida
```bash
# Instalar globalmente
npm install -g sysrot-hub
# O usar npx (recomendado)
npx sysrot-hub mi-proyecto
# Navegar al proyecto
cd mi-proyecto
# Instalar dependencias
npm install
# Configurar variables de entorno
cp .env.example .env.local
# Iniciar desarrollo
npm run dev
```
#### ⚙️ Variables de Entorno
```env
# Base de Datos (elegir una)
MONGODB_URI=mongodb://localhost:27017/mi-app
# O
NEXT_PUBLIC_SUPABASE_URL=https://tu-proyecto.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=tu-clave-anonima
# O
FIREBASE_PROJECT_ID=tu-proyecto-firebase
FIREBASE_PRIVATE_KEY=tu-clave-privada
# Autenticación NextAuth.js
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=tu-secreto-super-seguro
# Proveedores OAuth
GOOGLE_CLIENT_ID=tu-google-client-id
GOOGLE_CLIENT_SECRET=tu-google-client-secret
GITHUB_CLIENT_ID=tu-github-client-id
GITHUB_CLIENT_SECRET=tu-github-client-secret
# Inteligencia Artificial
OPENAI_API_KEY=sk-tu-clave-openai
ANTHROPIC_API_KEY=sk-ant-tu-clave-anthropic
GOOGLE_API_KEY=tu-clave-google-gemini
# Carga de Imágenes
CLOUDINARY_CLOUD_NAME=tu-cloud-name
CLOUDINARY_API_KEY=tu-api-key
CLOUDINARY_API_SECRET=tu-api-secret
# Modo Producción
NODE_ENV=production
```
### 🔧 SCRIPTS DISPONIBLES
```bash
# Desarrollo
npm run dev # Inicia servidor de desarrollo
# Construcción
npm run build # Construye para producción
npm run start # Inicia servidor de producción
# Linting
npm run lint # Ejecuta ESLint
npm run lint:fix # Corrige errores automáticamente
# Base de datos (Prisma)
npx prisma generate # Genera cliente Prisma
npx prisma db push # Aplica cambios a la BD
npx prisma studio # Abre interfaz visual de BD
```
### 📋 GUÍA DE COMPONENTES
#### 🤖 Sistema de IA Multi-Modelo
```typescript
// Ejemplo de uso del chat de IA
import { AIChat } from '@/components/ai/ai-chat';
export default function EjemploIA() {
return (
<div className="container mx-auto p-4">
<h1>Chat con IA</h1>
<AIChat
defaultModel="gpt-4o"
showModelSelector={true}
placeholder="Pregunta algo..."
/>
</div>
);
}
```
#### 🔐 Sistema de Autenticación
```typescript
// Ejemplo de protección de rutas
import { useSession } from 'next-auth/react';
import { useEffect } from 'react';
import { useRouter } from 'next/router';
export default function PaginaProtegida() {
const { data: session, status } = useSession();
const router = useRouter();
useEffect(() => {
if (status === 'loading') return; // Cargando
if (!session) router.push('/login'); // No autenticado
}, [session, status, router]);
if (status === 'loading') return <p>Cargando...</p>;
if (!session) return <p>Acceso denegado</p>;
return (
<div>
<h1>¡Hola {session.user?.name}!</h1>
<p>Esta página requiere autenticación.</p>
</div>
);
}
```
#### 🌍 Sistema de Internacionalización
```typescript
// Ejemplo de uso de traducciones
import { useTranslation } from '@/components/providers/intl-provider';
export default function ComponenteEjemplo() {
const { t, locale } = useTranslation();
return (
<div>
<h1>{t('welcome.title')}</h1>
<p>{t('welcome.description', { name: 'Usuario' })}</p>
<p>Idioma actual: {locale}</p>
</div>
);
}
```
#### 📤 Sistema de Carga de Imágenes
```typescript
// Ejemplo de carga de imágenes
import { ImageUpload } from '@/components/upload/image-upload';
export default function EjemploUpload() {
const handleUploadSuccess = (url: string) => {
console.log('Imagen cargada:', url);
};
return (
<div>
<h1>Cargar Imagen</h1>
<ImageUpload
onUploadSuccess={handleUploadSuccess}
maxSize={5 * 1024 * 1024} // 5MB
acceptedTypes={['image/jpeg', 'image/png', 'image/webp']}
/>
</div>
);
}
```
### 🐛 SOLUCIONES A LOS BUGS IDENTIFICADOS
#### ✅ Corrección 1: Parámetros de createProject
**Archivo: `cli.js`**
```javascript
// Reemplazar línea 67:
await createProject(projectName);
// Con:
await createProject({
projectName,
typescript: true,
tailwindcss: true,
eslint: true,
database: 'MongoDB',
auth: true,
authProviders: ['Google', 'GitHub'],
roles: true,
middleware: true,
ai: true,
aiModels: ['GPT-4o (OpenAI)', 'Claude 3.5 (Anthropic)', 'Gemini Flash Pro (Google)'],
cloudinary: true,
blog: true,
mdxFeatures: true,
forms: true,
darkMode: true,
uiComponents: true,
framerMotion: true,
notifications: true,
examplePages: true,
exampleTypes: [
'Ejemplo de Autenticación',
'Ejemplo de IA (Multi-modelo)',
'Biblioteca de Componentes',
'Ejemplo de Carga de Imágenes',
'Ejemplo de Formularios',
'Ejemplo de Animaciones',
'Ejemplo de Notificaciones',
'Ejemplo de Base de Datos',
'Ejemplo de UI y Temas',
'Ejemplo de TypeScript'
],
envExample: true,
documentation: true
});
```
#### ✅ Corrección 2: Sistema de traducción en Layout
**Archivo: `template/components/ui/layout.tsx`**
```typescript
// Reemplazar:
import { useTranslation } from 'react-intl';
const { formatMessage } = useTranslation();
// Con:
import { useTranslation } from '@/components/providers/intl-provider';
const { t } = useTranslation();
// Y cambiar todos los usos:
// formatMessage({ id: 'nav.home' }) → t('nav.home')
// formatMessage({ id: 'nav.examples' }) → t('nav.examples')
// formatMessage({ id: 'nav.blog' }) → t('nav.blog')
// formatMessage({ id: 'footer.by' }) → t('footer.by')
```
#### ✅ Corrección 3: Actualizar versión de Next.js
**Archivo: `createProject.js` línea 128**
```javascript
// Reemplazar:
"next": "^14.0.4",
// Con:
"next": "^14.2.17",
```
### 📊 MÉTRICAS DE CALIDAD
#### ✅ Estado Actual del Proyecto
- **Bugs Críticos:** 2 identificados y solucionados
- **Bugs Menores:** 2 identificados y solucionados
- **Cobertura de Traducción:** 350+ claves en ES/EN
- **Componentes Funcionales:** 50+ componentes UI
- **Ejemplos Incluidos:** 11 ejemplos completamente funcionales
- **Modelos de IA:** 3 integrados (4to próximamente)
- **Bases de Datos:** 4 soportadas
- **Performance:** Optimizado para Core Web Vitals
#### 🎯 Roadmap de Mejoras
**Q1 2025:**
- ✅ Corrección de bugs críticos
- 🚧 Integración Web3 básica
- 🚧 Suite de testing automatizado
- 🚧 Optimización de performance
**Q2 2025:**
- 📊 Integración de analytics
- 💳 Sistema de pagos con Stripe
- 📧 Servicios de email transaccional
- 🔄 Características en tiempo real
### 🆘 SOPORTE Y CONTRIBUCIÓN
#### 📞 Canales de Soporte
- **Issues:** [GitHub Issues](https://github.com/rotosaurio/sysrot-hub/issues)
- **Discusiones:** [GitHub Discussions](https://github.com/rotosaurio/sysrot-hub/discussions)
- **Documentación:** Este archivo y README.es.md
#### 🤝 Cómo Contribuir
1. Fork del repositorio
2. Crear rama para tu feature (`git checkout -b feature/nueva-caracteristica`)
3. Commit de cambios (`git commit -m 'Añadir nueva característica'`)
4. Push a la rama (`git push origin feature/nueva-caracteristica`)
5. Abrir Pull Request
#### 📋 Checklist de Contribución
- [ ] Código sigue las convenciones del proyecto
- [ ] Tests añadidos para nueva funcionalidad
- [ ] Documentación actualizada
- [ ] Traducciones añadidas (ES/EN)
- [ ] Build pasa sin errores
- [ ] ESLint no reporta warnings
---
## 📄 LICENCIA
Este proyecto está licenciado bajo la Licencia MIT. Ver el archivo [LICENSE](LICENSE) para más detalles.
---
## 🙏 AGRADECIMIENTOS
- **Next.js Team** por el framework increíble
- **Vercel** por el hosting y herramientas
- **OpenAI, Anthropic, Google** por las APIs de IA
- **Comunidad Open Source** por las librerías utilizadas
---
**⭐ ¡No olvides dar una estrella al proyecto si te ha sido útil!**
**🔗 Enlaces importantes:**
- [Repositorio GitHub](https://github.com/rotosaurio/sysrot-hub)
- [NPM Package](https://www.npmjs.com/package/sysrot-hub)
- [Documentación English](./README.md)
---
*Documentación generada automáticamente - Última actualización: Enero 2025*