@dankolar06/notifications
v0.0.1
Published
Framework-agnostic contract layer for the Telemed notification system — types, payload Zod schemas, channel/event constants, and localized copy. Server-engine-free, safe to bundle into React Native.
Readme
@dankolar06/notifications
The consumer / contract layer of the Telemed backend notification system, extracted into a standalone, framework-agnostic npm package. It is meant to be imported by the React Native (Expo) patient/clinician app and by backend code that needs the shared notification contract.
Its only runtime dependency is zod. It contains zero server-only
dependencies — no NestJS, no BullMQ, no Drizzle, no Medplum, no Node-only APIs — so it is safe to
bundle into a mobile app.
What's inside
- Types (
src/types/) — pure record shapes and enums: event/delivery/group-bucket records, severity/status const arrays, inbox list result, preference shapes. - Constants (
src/constants/) —TELEMED_NOTIFICATION_CHANNEL_KEYS(+ default list) andTELEMED_NOTIFICATION_EVENT_TYPES/TelemedNotificationEventType. - Payload schemas (
src/payloads/) — the Zod payload schemas (and inferred types) for each notification domain: request-task, alarm, appointment, request/encounter chat, screening. - Localized copy (
src/copy/) — cs/en tables for event titles, descriptions, severity labels, and appointment-type / status / priority maps, plus pure helpers:getEventTitle,getEventDescription,getSeverityLabel. - Utils (
src/utils/) — pure helpers such asbuildNotificationMessagePreview.
What's intentionally NOT here
The server engine stays in the backend and is deliberately excluded: the NestJS modules, BullMQ queues/processors, Drizzle channels, the delivery port/adapter interfaces, the recipient resolver, the publisher/orchestration types, and the server-side email/SMS/digest body builders (which depend on server record types and rendering). This package is the contract, not the runtime.
Usage (React Native / Expo)
import {
requestTaskPayloadSchema,
getEventTitle,
getSeverityLabel,
TELEMED_NOTIFICATION_CHANNEL_KEYS,
type RequestTaskNotificationPayload,
type NotificationListResult,
} from '@dankolar06/notifications'
const payload: RequestTaskNotificationPayload = requestTaskPayloadSchema.parse(rawPayload)
const title = getEventTitle('cs', 'request_task_created')
const severity = getSeverityLabel('cs', 'warning')Build
npm install
npm run build # emits dist/ with .js and .d.ts (+ declaration maps)