How sujalsubedixx/nest_sms works
Mini SMS Gateway is a JWT-protected REST API for user accounts, wallet-backed SMS delivery, message history, and provider health. Its main workflow validates and normalizes recipients, calculates SMS parts and cost, atomically charges credits and stores pending messages, then attempts providers in priority order; unsuccessful delivery triggers a guarded refund. Separate branches handle registration/login, filtered logs, and route-health reporting. The sampled source shows the send orchestration and persistence responsibilities; other documented capabilities are represented where the README or source index supports them.
Main entry points: sms.controller.js SMS handlers · sms.route.js SMS routes · index.js API server · deliver.js Failover delivery
Components 19
API and access
- Account routes
routes/user.route.js - Account handlers
controllers/user.controller.js - JWT authentication
middleware/auth.js - SMS routes
routes/sms.route.js - Send rate limit
middleware/rateLimiter.js - API server
index.js
SMS delivery
- SMS handlers
controllers/sms.controller.js - Failover delivery
services/deliver.js - Refund logic
services/refund.js
Provider routing
- Provider lookup
providers/index.js - Mock provider
providers/mockProvider.js
Persistent state
- User records
models/user.model.js - Wallet credits
models/wallet.model.js - Message records
models/message.model.js - Provider records
models/provider.model.js
Shared utilities
- Number normalization
utils/normalizeNumber.js - SMS part counter
utils/smsPart.js - Database connection
utils/db.js
Other components
- API client
Connections 28
- API client → Account routes: registers or logs in
README.md - Account routes → Account handlers: routes requests
routes/user.route.js - Account handlers → User records: creates or looks up
controllers/user.controller.js - Account handlers → Wallet credits: creates wallet
controllers/user.controller.js - API client → SMS routes: sends SMS or queries
README.md - SMS routes → JWT authentication: checks token
routes/sms.route.js - SMS routes → Send rate limit: limits sends
routes/sms.route.js - SMS routes → SMS handlers: routes requests
routes/sms.route.js - SMS handlers → Number normalization: normalizes recipients
controllers/sms.controller.js - SMS handlers → SMS part counter: counts parts
controllers/sms.controller.js - SMS handlers → Wallet credits: deducts credits
controllers/sms.controller.js - SMS handlers → Message records: creates and queries
controllers/sms.controller.js - SMS handlers → Provider lookup: loads providers
controllers/sms.controller.js - SMS handlers → Failover delivery: dispatches messages
controllers/sms.controller.js - SMS handlers → Refund logic: refunds delivery errors
controllers/sms.controller.js - SMS handlers → Provider records: reads route health
controllers/sms.controller.js - Failover delivery → Mock provider: tries providers
services/deliver.js - Failover delivery → Message records: records attempts
services/deliver.js - Failover delivery → Refund logic: refunds exhaustion
services/deliver.js - Provider lookup → Provider records: loads priorities
providers/index.js - Provider lookup → Mock provider: builds providers
providers/index.js - Mock provider → Provider records: uses provider data
providers/mockProvider.js - Refund logic → Message records: marks failed once
services/refund.js - Refund logic → Wallet credits: restores credits
services/refund.js - API server → Account routes: mounts routes
index.js - API server → SMS routes: mounts routes
index.js - API server → Database connection: connects database
index.js - API server → Provider records: seeds defaults
index.js