Skip to content

@venturekit-pro/comms

Terminal window
npm install @venturekit-pro/comms@dev
# Install the providers you need
npm install @aws-sdk/client-ses # SES email
npm install nodemailer # SMTP email
npm install @aws-sdk/client-sns # SNS push / SMS
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' });
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'],
});
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."
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, DeliveryReceipt
  • ChannelProvider, SendOptions, EmailSendOptions, PushSendOptions, SmsSendOptions
  • EmailConfig, SesEmailConfig, SmtpEmailConfig, PushConfig, SnsPushConfig, SmsConfig, SnsSmsConfig
  • SendRequest, BroadcastRequest, SendResult, BroadcastResult, RecipientResolver, GroupResolver, CommsConfig
  • MessageTemplate, RenderedTemplate, NotificationPreference, PreferenceStore
  • RoomType, ParticipantRole, ChatMessageType, ChatRoom, Participant, ChatMessage, TypingEvent, PresenceStatus, UserPresence, UnreadCount
  • ChatStore, CreateRoomOptions, SendMessageOptions
  • @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)