sendi/package.json
jmcqueen d0a0dda2b8 Initial commit: Sendi 2.0 SMS gateway (Webex + Twilio)
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>
2026-07-06 11:10:44 -04:00

44 lines
1.2 KiB
JSON

{
"name": "sendi",
"version": "2.0.0",
"private": true,
"type": "module",
"main": "dist/index.js",
"scripts": {
"dev": "node --watch --require ./scripts/navigator-patch.cjs src/index.ts",
"start": "node --require ./scripts/navigator-patch.cjs src/index.ts",
"build": "tsc",
"start:built": "node --require ./scripts/navigator-patch.cjs dist/index.js",
"typecheck": "tsc --noEmit",
"test": "vitest run",
"test:watch": "vitest",
"prisma:generate": "prisma generate",
"prisma:migrate": "prisma migrate dev",
"migrate-old": "node legacy/migrate-old-data.ts"
},
"engines": {
"node": ">=22.18.0"
},
"dependencies": {
"@prisma/adapter-better-sqlite3": "^6.19.3",
"@prisma/client": "^6.19.3",
"better-sqlite3": "^12.8.0",
"dotenv": "^16.4.7",
"express": "^5.2.1",
"pino": "^9.6.0",
"pino-pretty": "^13.1.3",
"twilio": "^5.13.1",
"webex-node-bot-framework": "^2.5.1",
"zod": "^3.24.2"
},
"devDependencies": {
"@types/better-sqlite3": "^7.6.13",
"@types/express": "^5.0.6",
"@types/node": "^22.13.10",
"@types/supertest": "^6.0.2",
"prisma": "^6.19.3",
"supertest": "^7.0.0",
"typescript": "^5.8.2",
"vitest": "^3.2.6"
}
}