@venturekit-pro/comms
Installation
Section titled “Installation”npm install @venturekit-pro/comms@dev
# Install the providers you neednpm install @aws-sdk/client-ses # SES emailnpm install nodemailer # SMTP emailnpm install @aws-sdk/client-sns # SNS push / SMSWhat It Provides
Section titled “What It Provides”Channel Providers
Section titled “Channel Providers”import { createEmailProvider, createPushProvider, createSmsProvider } from '@venturekit-pro/comms';
const email = createEmailProvider({ provider: 'ses', region: 'us-east-1' });const push = createPushProvider({ provider: 'sns', region: 'us-east-1' });const sms = createSmsProvider({ provider: 'sns', region: 'us-east-1' });Comms Client
Section titled “Comms Client”import { createCommsClient } from '@venturekit-pro/comms';
const comms = createCommsClient({ providers: new Map([ ['email', email], ['push', push], ['sms', sms], ]), defaultFrom: 'noreply@yourapp.com',});
await comms.send({ to: 'user@example.com', subject: 'Welcome!', body: 'Thanks for signing up.', channels: ['email'],});
await comms.broadcast({ to: [{ id: 'u1', email: 'a@b.com' }, { id: 'u2', email: 'c@d.com' }], subject: 'Announcement', body: 'Important update for all users.', channels: ['email'],});Templates
Section titled “Templates”import { createTemplateRegistry } from '@venturekit-pro/comms';
const templates = createTemplateRegistry();
templates.register({ id: 'welcome', name: 'Welcome Email', subject: 'Welcome, {{name}}!', body: 'Hi {{name}}, thanks for joining {{app}}.', defaults: { app: 'MyApp' },});
const rendered = templates.render('welcome', { name: 'Alice' });// rendered.subject = "Welcome, Alice!"// rendered.body = "Hi Alice, thanks for joining MyApp."Notification Preferences
Section titled “Notification Preferences”import { isChannelAllowed, isQuietHours, getEffectiveChannels, createMemoryPreferenceStore, DEFAULT_PREFERENCES,} from '@venturekit-pro/comms';
const prefs = createMemoryPreferenceStore();const allowed = await isChannelAllowed('user-1', 'email', prefs);import { createChatManager } from '@venturekit-pro/comms';
const chat = createChatManager(yourChatStore);
const room = await chat.createDirectRoom('user-1', 'user-2');await chat.sendMessage({ roomId: room.id, senderId: 'user-1', content: 'Hello!' });const messages = await chat.getMessages(room.id, { limit: 50 });Channel,DeliveryStatus,MessagePriority,Message,Attachment,Recipient,DeliveryReceiptChannelProvider,SendOptions,EmailSendOptions,PushSendOptions,SmsSendOptionsEmailConfig,SesEmailConfig,SmtpEmailConfig,PushConfig,SnsPushConfig,SmsConfig,SnsSmsConfigSendRequest,BroadcastRequest,SendResult,BroadcastResult,RecipientResolver,GroupResolver,CommsConfigMessageTemplate,RenderedTemplate,NotificationPreference,PreferenceStoreRoomType,ParticipantRole,ChatMessageType,ChatRoom,Participant,ChatMessage,TypingEvent,PresenceStatus,UserPresence,UnreadCountChatStore,CreateRoomOptions,SendMessageOptions
Dependencies
Section titled “Dependencies”@venturekit/core— required@aws-sdk/client-ses— optional peer (SES email)nodemailer— optional peer (SMTP email)@aws-sdk/client-sns— optional peer (SNS push / SMS)
Related
Section titled “Related”- API Reference — full type documentation
@venturekit-pro/tenancy— pair with tenant-scoped messaging