--- # BACKEND INVENTORY - Template SaaS # Version: 3.0.0 # Ultima actualizacion: 2026-01-10 # Nota: Reestructuracion SIMCO v3.7 aplicada metadata: proyecto: "template-saas" tipo: "BACKEND" version: "3.0.0" updated: "2026-01-10" framework: "NestJS 10.x" orm: "TypeORM" testing: "Jest" estado: "completado" modulos: - nombre: "auth" estado: "completado" services: - "auth.service.ts" - "token.service.ts" - "oauth.service.ts" - "mfa.service.ts" controllers: - "auth.controller.ts" entities: - "user.entity.ts" - "session.entity.ts" - "token.entity.ts" - "oauth-connection.entity.ts" dtos: - "login.dto.ts" - "register.dto.ts" - "refresh-token.dto.ts" guards: - "jwt-auth.guard.ts" - "local-auth.guard.ts" tests: 57 cobertura: 100 - nombre: "tenants" estado: "completado" services: - "tenants.service.ts" controllers: - "tenants.controller.ts" entities: - "tenant.entity.ts" - "tenant-settings.entity.ts" dtos: - "create-tenant.dto.ts" - "update-tenant.dto.ts" tests: 25 cobertura: 100 - nombre: "users" estado: "completado" services: - "users.service.ts" - "invitation.service.ts" controllers: - "users.controller.ts" entities: - "role.entity.ts" - "invitation.entity.ts" dtos: - "create-user.dto.ts" - "update-user.dto.ts" - "invite-user.dto.ts" tests: 42 cobertura: 98 - nombre: "billing" estado: "completado" services: - "billing.service.ts" - "stripe.service.ts" - "subscription.service.ts" - "invoice.service.ts" - "plans.service.ts" controllers: - "billing.controller.ts" - "stripe-webhook.controller.ts" - "plans.controller.ts" entities: - "subscription.entity.ts" - "invoice.entity.ts" - "payment.entity.ts" - "payment-method.entity.ts" - "plan.entity.ts" - "plan-feature.entity.ts" dtos: - "create-subscription.dto.ts" - "update-subscription.dto.ts" - "plan-response.dto.ts" tests: 160 cobertura: 100 - nombre: "onboarding" estado: "completado" services: - "onboarding.service.ts" controllers: - "onboarding.controller.ts" entities: [] dtos: - "onboarding-status.dto.ts" - "complete-onboarding.dto.ts" tests: 16 cobertura: 97 - nombre: "notifications" estado: "completado" services: - "notifications.service.ts" - "push-notification.service.ts" - "notification-queue.service.ts" - "devices.service.ts" controllers: - "notifications.controller.ts" - "devices.controller.ts" gateways: - "notifications.gateway.ts" entities: - "notification.entity.ts" - "template.entity.ts" - "user-preferences.entity.ts" - "user-device.entity.ts" - "notification-queue.entity.ts" - "notification-log.entity.ts" tests: 45 cobertura: 98 - nombre: "feature-flags" estado: "completado" services: - "feature-flags.service.ts" controllers: - "feature-flags.controller.ts" entities: - "flag.entity.ts" - "tenant-flag.entity.ts" - "user-flag.entity.ts" - "flag-evaluation.entity.ts" tests: 35 cobertura: 95 - nombre: "audit" estado: "completado" services: - "audit.service.ts" controllers: - "audit.controller.ts" entities: - "audit-log.entity.ts" - "activity-log.entity.ts" tests: 28 cobertura: 95 - nombre: "ai-integration" estado: "completado" services: - "ai.service.ts" - "openrouter.service.ts" controllers: - "ai.controller.ts" entities: - "ai-config.entity.ts" - "ai-usage.entity.ts" tests: 32 cobertura: 95 - nombre: "storage" estado: "completado" services: - "storage.service.ts" - "s3.provider.ts" controllers: - "storage.controller.ts" entities: - "file.entity.ts" - "pending-upload.entity.ts" - "storage-usage.entity.ts" tests: 113 cobertura: 96 - nombre: "webhooks" estado: "completado" services: - "webhooks.service.ts" - "webhook-processor.service.ts" controllers: - "webhooks.controller.ts" entities: - "webhook.entity.ts" - "webhook-delivery.entity.ts" tests: 42 cobertura: 98 - nombre: "email" estado: "completado" services: - "email.service.ts" - "sendgrid.provider.ts" - "ses.provider.ts" - "smtp.provider.ts" controllers: [] entities: [] tests: 35 cobertura: 92 - nombre: "whatsapp" estado: "completado" services: - "whatsapp.service.ts" controllers: - "whatsapp.controller.ts" - "whatsapp-webhook.controller.ts" entities: - "whatsapp-config.entity.ts" - "whatsapp-message.entity.ts" tests: 22 cobertura: 90 - nombre: "rbac" estado: "completado" services: - "rbac.service.ts" guards: - "roles.guard.ts" - "permissions.guard.ts" decorators: - "roles.decorator.ts" - "permissions.decorator.ts" tests: 25 cobertura: 95 - nombre: "superadmin" estado: "completado" services: - "superadmin.service.ts" controllers: - "superadmin.controller.ts" guards: - "superadmin.guard.ts" tests: 40 cobertura: 90 - nombre: "health" estado: "completado" controllers: - "health.controller.ts" tests: 8 cobertura: 100 shared: guards: - nombre: "JwtAuthGuard" estado: "completado" - nombre: "TenantGuard" estado: "completado" - nombre: "RolesGuard" estado: "completado" - nombre: "PermissionsGuard" estado: "completado" - nombre: "SuperadminGuard" estado: "completado" decorators: - nombre: "CurrentUser" estado: "completado" - nombre: "CurrentTenant" estado: "completado" - nombre: "RequirePermission" estado: "completado" - nombre: "Roles" estado: "completado" - nombre: "Public" estado: "completado" interceptors: - nombre: "TenantContextInterceptor" estado: "completado" - nombre: "TransformInterceptor" estado: "completado" resumen: total_modulos: 16 total_services: 30 total_controllers: 18 total_endpoints: 103 total_entities: 37 total_dtos: 45 total_tests: 798 total_test_suites: 34 cobertura_tests: 76.37 planificado: services_estimados: 30 controllers_estimados: 18 endpoints_estimados: 103 entities_estimados: 37 tests_estimados: 800 nota: "Objetivo: 80% cobertura" dependencias_npm: core: - "@nestjs/core@10.x" - "@nestjs/common@10.x" - "@nestjs/platform-express@10.x" - "typeorm@0.3.x" - "@nestjs/typeorm@10.x" auth: - "@nestjs/jwt@10.x" - "@nestjs/passport@10.x" - "passport-jwt" - "passport-local" - "bcrypt" billing: - "stripe" notifications: - "web-push" - "@nestjs/websockets" - "@nestjs/platform-socket.io" - "socket.io" queue: - "@nestjs/bullmq" - "bullmq" - "ioredis" storage: - "@aws-sdk/client-s3" - "@aws-sdk/s3-request-presigner" email: - "@sendgrid/mail" - "@aws-sdk/client-ses" - "nodemailer" ultima_actualizacion: "2026-01-10" actualizado_por: "Claude Code (Estandarizacion SIMCO v3.7)"