# FASE 5: SHARED LIBRARIES **Estado:** Pendiente **Duracion Estimada:** 2-3 dias **Agente Principal:** Tech-Leader + Backend-Agent **Dependencias:** Fase 4 completada --- ## OBJETIVO Crear repositorio de librerias compartidas que puedan ser usadas por todos los proyectos: 1. Utilidades comunes (auth, logging, validation) 2. UI components compartidos 3. Tipos/interfaces compartidos 4. Configuraciones compartidas --- ## ESTRUCTURA OBJETIVO ``` shared-libs/ | +-- packages/ | +-- auth/ # Autenticacion compartida | | +-- src/ | | +-- package.json | | +-- tsconfig.json | | | +-- logger/ # Logging estandarizado | | +-- src/ | | +-- package.json | | | +-- validation/ # Validaciones comunes | | +-- src/ | | +-- package.json | | | +-- ui-components/ # Componentes React compartidos | | +-- src/ | | +-- package.json | | | +-- types/ # Tipos TypeScript compartidos | | +-- src/ | | +-- package.json | | | +-- config/ # Configuraciones base | +-- eslint-config/ | +-- tsconfig/ | +-- prettier-config/ | +-- package.json # Workspaces +-- lerna.json # O pnpm-workspace.yaml +-- README.md ``` --- ## PAQUETES A CREAR ### @workspace/auth ```typescript // Funciones de autenticacion compartidas export { verifyJWT, generateJWT, hashPassword, verifyPassword } from './jwt'; export { AuthMiddleware } from './middleware'; export type { JWTPayload, AuthConfig } from './types'; ``` ### @workspace/logger ```typescript // Logger estandarizado export { createLogger, Logger } from './logger'; export type { LogLevel, LogConfig } from './types'; ``` ### @workspace/validation ```typescript // Schemas de validacion compartidos export { validateEmail, validatePassword, validateUUID } from './validators'; export { createValidationMiddleware } from './middleware'; ``` ### @workspace/ui-components ```typescript // Componentes React compartidos export { Button, Input, Modal, Table, Card } from './components'; export { useAuth, useToast, useModal } from './hooks'; ``` ### @workspace/types ```typescript // Tipos compartidos export type { User, Tenant, Permission } from './auth'; export type { ApiResponse, PaginatedResponse } from './api'; export type { BaseEntity, Timestamps } from './database'; ``` --- ## VERSIONADO ```yaml # Cada paquete tiene version independiente (SemVer) @workspace/auth: 1.0.0 @workspace/logger: 1.0.0 @workspace/validation: 1.0.0 # Publicacion a registry privado o npm npm publish --registry=https://npm.tu-org.com ``` --- ## USO EN PROYECTOS ```json // gamilit-platform/apps/backend/package.json { "dependencies": { "@workspace/auth": "^1.0.0", "@workspace/logger": "^1.0.0" } } ``` --- ## TAREAS PRINCIPALES 1. Crear estructura del repo shared-libs 2. Identificar codigo a extraer de proyectos 3. Crear paquetes iniciales 4. Configurar build y publish 5. Actualizar proyectos para usar shared-libs --- ## CONSIDERACIONES - No extraer codigo hasta que proyectos esten migrados - Empezar con paquetes pequenos y estables - Documentar API de cada paquete - Tests para cada paquete --- **Agente Responsable:** Tech-Leader