Sendi is a Webex to Twilio SMS gateway written in TypeScript that runs directly on Node 22.18+ via native type-stripping (no bundler/transpiler). Each Webex space represents one external SMS contact; inbound MMS is proxied both ways, with delivery-status cards for outbound sends. Highlights: - Express 5 HTTP surface for Twilio /sms and /callback (signature-validated) - webex-node-bot-framework in websocket transport mode for bot control plane - Prisma 6 + SQLite via better-sqlite3 driver adapter - Zod-validated env with fail-fast startup and pino secret redaction - Pino logging: pretty in dev, structured JSON in prod - 13 vitest unit tests (phone normalization, Twilio signature validation, card action dispatch) - Native --require preload patches Node 22's read-only globalThis.navigator so @webex/internal-media-core (transitive) can load Co-authored-by: Cursor <cursoragent@cursor.com>
39 lines
473 B
Text
39 lines
473 B
Text
# Dependencies
|
|
node_modules/
|
|
|
|
# Build output
|
|
dist/
|
|
*.tsbuildinfo
|
|
|
|
# Secrets — NEVER commit
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
|
|
# Runtime data
|
|
prisma/dev.db
|
|
prisma/dev.db-journal
|
|
prisma/*.db
|
|
prisma/*.db-journal
|
|
|
|
# Twilio/Webex media drops (user content)
|
|
media/
|
|
!media/.gitkeep
|
|
|
|
# Logs
|
|
*.log
|
|
logs/
|
|
npm-debug.log*
|
|
pnpm-debug.log*
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Editors
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
|
|
# Legacy artifacts from sendi v1 — contains real phone numbers and old screenshots
|
|
legacy/
|