Extensions
Optional pieces you add on top of IGNIS core: components you register once, helpers you inject where you need them.
Components
| Component | What it does | Import from | When you reach for it |
|---|---|---|---|
| Authentication | Verifies who is calling - JWT, Basic, JWKS, service-assertion strategies | @venizia/ignis | A route needs to know who the caller is |
| Authorization | Casbin-based RBAC, per-route policies | @venizia/ignis | A route needs a permission check beyond authentication |
| Health Check | GET /health and POST /health/ping | @venizia/ignis | A load balancer or Kubernetes needs a liveness probe |
| Sends email via Nodemailer, Mailgun, Amazon SES, or a queue | @venizia/ignis/mail | The app sends transactional or templated email | |
| Request Tracker | Tags every request with an ID, logs method/path/timing | @venizia/ignis | Always on - registered automatically, nothing to configure |
| Socket.IO | Real-time messaging over Socket.IO, Redis adapter | @venizia/ignis/socket-io | Clients need rooms or Socket.IO-specific features |
| Static Asset | Upload/download files - S3-compatible or local disk | @venizia/ignis/static-asset | The app stores or serves user-uploaded files |
| API Reference | Interactive OpenAPI docs, Scalar UI by default | @venizia/ignis | You want a browsable UI for your REST routes |
| WebSocket | Native Bun WebSocket, Redis pub/sub, heartbeat | @venizia/ignis/websocket | Clients need a raw WebSocket without Socket.IO |
Four of those are deliberately off the root barrel. Import them from their own subpath, or the names do not resolve.
Helpers
Every peer dependency below is optional. You install one only when you use the helper that needs it.
| Helper | What it does | When you reach for it | Peer dependency |
|---|---|---|---|
| Cron | Scheduled tasks | You run code on a cron schedule | cron |
| Crypto | Encryption and signing | You hash, encrypt, or sign data | None |
| Environment | Env var management | You need typed, validated env var access | None |
| Error | Error utilities | You throw or handle an error | None |
| Inversion | DI container | You build custom bindings or providers | None |
| Logger | Logging | You need scoped, leveled logging | winston or pino |
| Network | HTTP/TCP/UDP clients | You call another service over HTTP, TCP, or UDP | axios, for the Axios client only |
| Kafka | Kafka messaging | You publish or consume Kafka topics | @platformatic/kafka |
| Queue | Job queues | You need background or delayed work | bullmq or mqtt |
| Redis | Redis client | You need a Redis connection - cache, pub/sub, locks | ioredis |
| Secrets | Secret loading and rotation | You read secrets from Vault, dotenv, or the environment | node-vault or @dotenvx/dotenvx |
| Socket.IO | Socket.IO server | You build a custom real-time feature | socket.io |
| Storage | File storage | You read/write files to S3 or disk directly | None for the Bun S3 backend, which uses Bun's own client; minio for the MinIO one |
| Types | Shared types | You need IGNIS's shared TypeScript utility types | None |
| UID | Snowflake IDs | You need unique, sortable IDs | None |
| WebSocket | WebSocket server | You build a custom real-time feature | None |
| Worker Thread | Worker pools | You move CPU-heavy work off the main thread | None |