workspace-v1/shared/modules/notifications/README.md
rckrdmrd cb4c0681d3 feat(workspace): Add new projects and update architecture
New projects created:
- michangarrito (marketplace mobile)
- template-saas (SaaS template)
- clinica-dental (dental ERP)
- clinica-veterinaria (veterinary ERP)

Architecture updates:
- Move catalog from core/ to shared/
- Add MCP servers structure and templates
- Add git management scripts
- Update SUBREPOSITORIOS.md with 15 new repos
- Update .gitignore for new projects

Repository infrastructure:
- 4 main repositories
- 11 subrepositorios
- Gitea remotes configured

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 04:43:28 -06:00

3.4 KiB

Notifications - Core Module

Modulo: shared/modules/notifications/ Version: 0.1.0 Fecha: 2026-01-03 Owner: Backend-Agent Estado: desarrollo


Descripcion

Modulo de notificaciones compartido que provee servicios para envio de emails, push notifications e in-app notifications. Abstrae los proveedores de notificacion para uso unificado en todos los proyectos.


Instalacion

Prerequisitos

npm install nodemailer @nestjs/mailer
npm install -D @types/nodemailer
# Opcional para push:
npm install firebase-admin

Configuracion de Paths

{
  "compilerOptions": {
    "paths": {
      "@shared/modules/*": ["../../shared/modules/*"]
    }
  }
}

API Publica (Planificada)

Servicios

Servicio Descripcion Canales
NotificationService Servicio principal unificado email, push, in-app
EmailService Envio de emails SMTP, SES
PushService Push notifications FCM, APNs
InAppService Notificaciones in-app WebSocket, polling

Tipos

interface Notification {
  id: string;
  userId: string;
  type: 'email' | 'push' | 'in-app';
  title: string;
  body: string;
  data?: Record<string, any>;
  status: 'pending' | 'sent' | 'failed' | 'read';
  createdAt: Date;
  sentAt?: Date;
  readAt?: Date;
}

interface NotificationPreferences {
  userId: string;
  email: boolean;
  push: boolean;
  inApp: boolean;
  categories: Record<string, boolean>;
}

Ejemplos de Uso

Ejemplo 1: Enviar Notificacion

import { NotificationService } from '@shared/modules/notifications';

@Injectable()
export class OrderService {
  constructor(private notifications: NotificationService) {}

  async createOrder(order: Order) {
    // ... crear orden

    await this.notifications.send({
      userId: order.userId,
      type: 'email',
      title: 'Orden Confirmada',
      body: `Tu orden #${order.id} ha sido confirmada`,
      template: 'order-confirmation',
      data: { order },
    });
  }
}

Ejemplo 2: Notificacion Multi-canal

await this.notifications.sendMulti({
  userId: user.id,
  channels: ['email', 'push', 'in-app'],
  title: 'Nuevo Mensaje',
  body: 'Tienes un nuevo mensaje',
  respectPreferences: true,  // Respetar preferencias del usuario
});

Dependencias

Internas

Modulo Uso
@shared/modules/utils Formateo, validaciones

Externas (npm)

Paquete Version Uso
nodemailer ^6.9 Envio SMTP
@nestjs/mailer ^1.9 Integracion NestJS
firebase-admin ^11.0 Push FCM (opcional)

Aspecto modules/notifications catalog/notifications
Contenido Servicios listos Documentacion + DDL
Uso Importar directamente Copiar y adaptar
DDL No incluye Incluye tablas

Estado Actual

- [ ] NotificationService base
- [ ] EmailService con nodemailer
- [ ] PushService con FCM
- [ ] InAppService con eventos
- [ ] Template engine
- [ ] Preferencias de usuario
- [ ] Tests unitarios
- [ ] Documentacion completa

Changelog

v0.1.0 (2026-01-03)

  • Estructura inicial
  • README con planificacion

Modulo: shared/modules/notifications/ | Owner: Backend-Agent