- Configure workspace Git repository with comprehensive .gitignore - Add Odoo as submodule for ERP reference code - Include documentation: SETUP.md, GIT-STRUCTURE.md - Add gitignore templates for projects (backend, frontend, database) - Structure supports independent repos per project/subproject level Workspace includes: - core/ - Reusable patterns, modules, orchestration system - projects/ - Active projects (erp-suite, gamilit, trading-platform, etc.) - knowledge-base/ - Reference code and patterns (includes Odoo submodule) - devtools/ - Development tools and templates - customers/ - Client implementations template 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
360 lines
13 KiB
YAML
360 lines
13 KiB
YAML
# ═══════════════════════════════════════════════════════════════════════════════
|
|
# ÍNDICE DEL CATÁLOGO DE FUNCIONALIDADES REUTILIZABLES
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
#
|
|
# Versión: 1.0.0
|
|
# Fecha: 2025-12-08
|
|
# Propósito: Índice máquina-readable para búsqueda rápida de funcionalidades
|
|
#
|
|
# USO:
|
|
# Los agentes consultan este archivo ANTES de implementar funcionalidades comunes.
|
|
# Usar: grep -i "{funcionalidad}" @CATALOG_INDEX
|
|
#
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
|
|
version: "1.0.0"
|
|
fecha_actualizacion: "2025-12-08"
|
|
total_funcionalidades: 8
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────────
|
|
# ÍNDICE DE FUNCIONALIDADES
|
|
# ─────────────────────────────────────────────────────────────────────────────────
|
|
|
|
funcionalidades:
|
|
|
|
# ═══════════════════════════════════════════════════════════════════
|
|
# AUTENTICACIÓN Y SEGURIDAD
|
|
# ═══════════════════════════════════════════════════════════════════
|
|
|
|
auth:
|
|
nombre: "Autenticación y Autorización"
|
|
path: "core/catalog/auth/"
|
|
alias: "@CATALOG_AUTH"
|
|
estado: "production-ready" # production-ready | documentando | pendiente
|
|
origen: "projects/gamilit"
|
|
version: "1.0.0"
|
|
stack:
|
|
- "NestJS"
|
|
- "JWT"
|
|
- "Passport"
|
|
- "bcrypt"
|
|
- "TypeORM"
|
|
keywords:
|
|
- "login"
|
|
- "registro"
|
|
- "jwt"
|
|
- "token"
|
|
- "password"
|
|
- "oauth"
|
|
- "social-login"
|
|
- "autenticacion"
|
|
- "authorization"
|
|
- "guard"
|
|
caracteristicas:
|
|
- "JWT access + refresh tokens"
|
|
- "Password hashing con bcrypt"
|
|
- "Multiple OAuth providers"
|
|
- "Auth attempts tracking"
|
|
- "Password recovery"
|
|
dependencias_npm:
|
|
- "@nestjs/jwt"
|
|
- "@nestjs/passport"
|
|
- "passport-jwt"
|
|
- "bcrypt"
|
|
tablas_requeridas:
|
|
- "auth.users"
|
|
- "auth.user_sessions"
|
|
- "auth.auth_attempts"
|
|
|
|
session-management:
|
|
nombre: "Gestión de Sesiones"
|
|
path: "core/catalog/session-management/"
|
|
alias: "@CATALOG_SESSION"
|
|
estado: "production-ready"
|
|
origen: "projects/gamilit"
|
|
version: "1.0.0"
|
|
stack:
|
|
- "NestJS"
|
|
- "TypeORM"
|
|
- "PostgreSQL"
|
|
keywords:
|
|
- "sesion"
|
|
- "session"
|
|
- "logout"
|
|
- "dispositivo"
|
|
- "device"
|
|
- "concurrent"
|
|
- "max-sessions"
|
|
caracteristicas:
|
|
- "Máximo N sesiones concurrentes"
|
|
- "Auto-cleanup de sesiones expiradas"
|
|
- "Tracking de dispositivos"
|
|
- "Logout de sesión específica"
|
|
- "Logout de todas las sesiones"
|
|
dependencias_npm:
|
|
- "typeorm"
|
|
tablas_requeridas:
|
|
- "auth.user_sessions"
|
|
|
|
rate-limiting:
|
|
nombre: "Limitación de Tasa (Rate Limiting)"
|
|
path: "core/catalog/rate-limiting/"
|
|
alias: "@CATALOG_RATELIMIT"
|
|
estado: "production-ready"
|
|
origen: "projects/gamilit"
|
|
version: "1.0.0"
|
|
stack:
|
|
- "NestJS"
|
|
- "Redis (opcional)"
|
|
keywords:
|
|
- "rate-limit"
|
|
- "throttle"
|
|
- "429"
|
|
- "too-many-requests"
|
|
- "abuse"
|
|
- "ddos"
|
|
- "limite"
|
|
caracteristicas:
|
|
- "Rate limiting por usuario/IP"
|
|
- "Configuración por endpoint"
|
|
- "Headers de límite estándar"
|
|
- "Respuestas 429 con retry-after"
|
|
dependencias_npm:
|
|
- "@nestjs/throttler"
|
|
tablas_requeridas: []
|
|
|
|
# ═══════════════════════════════════════════════════════════════════
|
|
# COMUNICACIÓN Y NOTIFICACIONES
|
|
# ═══════════════════════════════════════════════════════════════════
|
|
|
|
notifications:
|
|
nombre: "Sistema de Notificaciones"
|
|
path: "core/catalog/notifications/"
|
|
alias: "@CATALOG_NOTIFY"
|
|
estado: "production-ready"
|
|
origen: "projects/gamilit"
|
|
version: "1.0.0"
|
|
stack:
|
|
- "NestJS"
|
|
- "TypeORM"
|
|
- "Nodemailer"
|
|
- "FCM (opcional)"
|
|
keywords:
|
|
- "notificacion"
|
|
- "notification"
|
|
- "email"
|
|
- "push"
|
|
- "in-app"
|
|
- "alerta"
|
|
- "mensaje"
|
|
caracteristicas:
|
|
- "Notificaciones email"
|
|
- "Notificaciones in-app"
|
|
- "Push notifications (FCM)"
|
|
- "Preferencias de usuario"
|
|
- "Historial de notificaciones"
|
|
- "Templates de email"
|
|
dependencias_npm:
|
|
- "nodemailer"
|
|
- "@nestjs/mailer"
|
|
- "firebase-admin (opcional)"
|
|
tablas_requeridas:
|
|
- "notifications.notifications"
|
|
- "notifications.notification_preferences"
|
|
- "notifications.notification_templates"
|
|
|
|
websocket:
|
|
nombre: "Comunicación WebSocket"
|
|
path: "core/catalog/websocket/"
|
|
alias: "@CATALOG_WS"
|
|
estado: "production-ready"
|
|
origen: "projects/trading-platform"
|
|
version: "1.0.0"
|
|
stack:
|
|
- "NestJS"
|
|
- "Socket.io"
|
|
keywords:
|
|
- "websocket"
|
|
- "socket"
|
|
- "realtime"
|
|
- "tiempo-real"
|
|
- "streaming"
|
|
- "live"
|
|
- "push"
|
|
caracteristicas:
|
|
- "Conexiones WebSocket"
|
|
- "Rooms/canales"
|
|
- "Autenticación de socket"
|
|
- "Broadcasting"
|
|
- "Heartbeat/ping"
|
|
dependencias_npm:
|
|
- "@nestjs/websockets"
|
|
- "@nestjs/platform-socket.io"
|
|
- "socket.io"
|
|
tablas_requeridas: []
|
|
|
|
# ═══════════════════════════════════════════════════════════════════
|
|
# ARQUITECTURA MULTI-TENANT
|
|
# ═══════════════════════════════════════════════════════════════════
|
|
|
|
multi-tenancy:
|
|
nombre: "Soporte Multi-Tenant"
|
|
path: "core/catalog/multi-tenancy/"
|
|
alias: "@CATALOG_TENANT"
|
|
estado: "production-ready"
|
|
origen: "projects/gamilit"
|
|
version: "1.0.0"
|
|
stack:
|
|
- "PostgreSQL"
|
|
- "RLS"
|
|
- "NestJS"
|
|
keywords:
|
|
- "tenant"
|
|
- "multi-tenant"
|
|
- "organization"
|
|
- "empresa"
|
|
- "aislamiento"
|
|
- "rls"
|
|
- "row-level-security"
|
|
caracteristicas:
|
|
- "Aislamiento por tenant"
|
|
- "Row Level Security (RLS)"
|
|
- "Tenant context en requests"
|
|
- "Configuración por tenant"
|
|
dependencias_npm:
|
|
- "typeorm"
|
|
tablas_requeridas:
|
|
- "core.organizations"
|
|
- "core.organization_members"
|
|
|
|
# ═══════════════════════════════════════════════════════════════════
|
|
# FEATURE FLAGS Y CONFIGURACIÓN
|
|
# ═══════════════════════════════════════════════════════════════════
|
|
|
|
feature-flags:
|
|
nombre: "Feature Flags Dinámicos"
|
|
path: "core/catalog/feature-flags/"
|
|
alias: "@CATALOG_FLAGS"
|
|
estado: "production-ready"
|
|
origen: "projects/gamilit"
|
|
version: "1.0.0"
|
|
stack:
|
|
- "NestJS"
|
|
- "TypeORM"
|
|
- "PostgreSQL"
|
|
keywords:
|
|
- "feature-flag"
|
|
- "toggle"
|
|
- "feature"
|
|
- "bandera"
|
|
- "a/b-test"
|
|
- "rollout"
|
|
- "configuracion"
|
|
caracteristicas:
|
|
- "Flags por ambiente"
|
|
- "Flags por usuario/rol"
|
|
- "Activación gradual (rollout)"
|
|
- "Cache de flags"
|
|
- "UI de administración"
|
|
dependencias_npm:
|
|
- "typeorm"
|
|
tablas_requeridas:
|
|
- "config.feature_flags"
|
|
- "config.feature_flag_rules"
|
|
|
|
# ═══════════════════════════════════════════════════════════════════
|
|
# PAGOS E INTEGRACIONES
|
|
# ═══════════════════════════════════════════════════════════════════
|
|
|
|
payments:
|
|
nombre: "Integración de Pagos"
|
|
path: "core/catalog/payments/"
|
|
alias: "@CATALOG_PAYMENTS"
|
|
estado: "production-ready"
|
|
origen: "projects/trading-platform"
|
|
version: "1.0.0"
|
|
stack:
|
|
- "NestJS"
|
|
- "Stripe"
|
|
keywords:
|
|
- "pago"
|
|
- "payment"
|
|
- "stripe"
|
|
- "subscription"
|
|
- "suscripcion"
|
|
- "factura"
|
|
- "invoice"
|
|
- "checkout"
|
|
caracteristicas:
|
|
- "Integración Stripe"
|
|
- "Webhooks de pago"
|
|
- "Suscripciones"
|
|
- "Checkout sessions"
|
|
- "Historial de pagos"
|
|
dependencias_npm:
|
|
- "stripe"
|
|
tablas_requeridas:
|
|
- "billing.subscriptions"
|
|
- "billing.payments"
|
|
- "billing.invoices"
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────────
|
|
# BÚSQUEDA RÁPIDA POR KEYWORD
|
|
# ─────────────────────────────────────────────────────────────────────────────────
|
|
#
|
|
# Para buscar funcionalidad por keyword:
|
|
# grep -i "{keyword}" core/catalog/CATALOG-INDEX.yml
|
|
#
|
|
# Ejemplos:
|
|
# grep -i "login" → auth
|
|
# grep -i "sesion" → session-management
|
|
# grep -i "429" → rate-limiting
|
|
# grep -i "email" → notifications
|
|
# grep -i "realtime" → websocket
|
|
# grep -i "tenant" → multi-tenancy
|
|
# grep -i "toggle" → feature-flags
|
|
# grep -i "stripe" → payments
|
|
#
|
|
# ─────────────────────────────────────────────────────────────────────────────────
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────────────
|
|
# INSTRUCCIONES PARA AGENTES
|
|
# ─────────────────────────────────────────────────────────────────────────────────
|
|
|
|
instrucciones:
|
|
cuando_consultar: |
|
|
SIEMPRE consultar este índice ANTES de implementar:
|
|
- Autenticación/login
|
|
- Gestión de sesiones
|
|
- Rate limiting
|
|
- Notificaciones
|
|
- WebSockets/tiempo real
|
|
- Multi-tenancy
|
|
- Feature flags
|
|
- Pagos/suscripciones
|
|
|
|
como_buscar: |
|
|
1. Buscar por keyword:
|
|
grep -i "{lo que necesito}" @CATALOG_INDEX
|
|
|
|
2. Si encuentra match:
|
|
- Leer path indicado
|
|
- Verificar estado (preferir production-ready)
|
|
- Verificar stack compatible
|
|
|
|
3. Si NO encuentra:
|
|
- Proceder con implementación nueva
|
|
- Considerar agregar al catálogo después
|
|
|
|
que_hacer_si_encuentra: |
|
|
1. Ir a: core/catalog/{funcionalidad}/
|
|
2. Leer: README.md (descripción y trade-offs)
|
|
3. Seguir: IMPLEMENTATION.md (pasos)
|
|
4. Copiar: _reference/ (código base)
|
|
5. Adaptar: configuración al proyecto actual
|
|
6. Validar: ejecutar tests de referencia
|
|
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
# FIN DEL ÍNDICE
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|