@takentrade/takentrade-libs
v3.2.4
Published
TakeNTrade shared libraries
Maintainers
Readme
TakeNTrade Microservices Libraries
Shared libraries for the TakeNTrade microservices architecture, providing authentication, caching, messaging, notifications, resilience patterns, metrics, and common utilities.
Installation
npm install @takentrade/takentrade-libsQuick Start
import {
CacheModule,
MetricsModule,
CircuitBreakerModule,
} from '@takentrade/takentrade-libs';
@Module({
imports: [
CacheModule.register(),
MetricsModule.register({ defaultMetrics: true }),
CircuitBreakerModule,
],
})
export class AppModule {}Modules
| Module | Description | Documentation | | ------------------ | ---------------------------------------------- | ---------------------------------------------- | | Authentication | Route protection and role-based access control | docs/auth.md | | Cache | Redis-based caching with TTL support | docs/cache.md | | BullMQ | Background job processing and queues | docs/bullmq.md | | NATS | Microservice messaging and event streaming | docs/nats.md | | Notifications | Email, SMS, and push notifications | docs/notifications.md | | RPC | Request-response patterns for NATS | docs/rpc.md | | Resilience | Circuit breakers for fault tolerance | docs/resilience.md | | Metrics | Prometheus metrics collection | docs/metrics.md | | Monitoring | Error tracking, alerting, uptime monitoring | docs/monitoring.md | | Common | Shared constants, enums, and utilities | docs/common.md | | Utils | DTOs, pipes, filters, and helpers | docs/utils.md |
Features
🔐 Authentication & Authorization
@Public()and@Roles()decorators- JWT-based authentication support
- Role-based access control
💾 Caching
- Redis integration with ioredis
- TTL support
- Hash operations
- Auto-reconnection
📊 Metrics & Observability
- Prometheus metrics with prom-client
- Default process metrics (CPU, memory, event loop)
- Custom counters, gauges, histograms, summaries
- Circuit breaker metrics integration
/metricsendpoint for scraping
🔄 Resilience
- Circuit breakers using Opossum
- Automatic failure detection
- Fallback support
- Health checks
- Request caching
- Comprehensive metrics
🚀 Background Jobs
- BullMQ integration
- Job scheduling and retries
- Delayed and repeatable jobs
- Progress tracking
📨 Messaging
- NATS integration
- Event patterns
- Request-response (RPC)
- Subject constants
- Automatic logging
📧 Notifications
- Email (verification, OTP, password reset, etc.)
- SMS notifications
- Push notifications
- Template support
Environment Variables
# Cache & BullMQ
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=your_password
# NATS
NATS_URL=nats://localhost:4222
NATS_SERVICE_QUEUE=service_queue
# JWT
JWT_SECRET=your_jwt_secretUsage Examples
Cache
await this.cacheService.set('key', 'value', 3600); // 1 hour TTL
const value = await this.cacheService.get('key');Metrics
this.metricsService.registerCounter({
name: 'requests_total',
help: 'Total requests',
labelNames: ['method', 'status'],
});
this.metricsService.incrementCounter('requests_total', {
method: 'GET',
status: '200',
});Circuit Breaker
this.circuitBreaker.createBreaker('api', async (data) => this.apiCall(data), {
timeout: 5000,
errorThresholdPercentage: 50,
});
const result = await this.circuitBreaker.fire('api', requestData);Background Jobs
await this.queue.add(
'process-order',
{ orderId: '123' },
{
attempts: 3,
backoff: { type: 'exponential', delay: 1000 },
}
);Documentation
- Authentication - Route protection and RBAC
- Cache - Redis caching
- BullMQ - Background jobs
- NATS - Messaging
- Notifications - Email, SMS, push
- RPC - Request-response patterns
- Resilience - Circuit breakers
- Metrics - Prometheus metrics
- Common - Shared utilities
- Utils - DTOs, pipes, filters
Contributing
This is a private package for TakeNTrade microservices.
License
Proprietary - See LICENSE file for details.
Support
For issues or questions, contact the TakeNTrade development team.
