cube-ms
Version:
Production-ready microservice framework with health monitoring, validation, error handling, and Docker Swarm support
47 lines (39 loc) • 1.41 kB
JavaScript
import { CreateService } from 'cube-ms';
import { setupRoutes } from './routes/index.js';
import { config } from './config/app.config.js';
// Load environment variables
import 'dotenv/config';
// Create the microservice
const service = CreateService({
port: config.server.port,
appName: config.app.name,
serviceName: config.app.serviceName,
containerName: config.app.containerName,
// Production features
enableSecurity: config.security.enabled,
securityLevel: config.security.level,
enableRateLimit: config.rateLimit.enabled,
rateLimitPreset: config.rateLimit.preset,
enablePerformanceMonitoring: config.monitoring.performance,
enableHealthCheck: config.monitoring.healthCheck,
requestTimeoutMs: config.server.timeout,
// Database configuration
database: {
url: config.database.url,
config: {
description: 'Main application database',
...config.database.options
}
}
});
// Setup routes
setupRoutes(service);
// Global error handling for unhandled promises
process.on('unhandledRejection', (reason, promise) => {
service.logger.error('Unhandled Rejection at Promise', { reason, promise });
});
process.on('uncaughtException', (error) => {
service.logger.error('Uncaught Exception thrown', { error: error.message, stack: error.stack });
process.exit(1);
});
console.log(`🚀 ${config.app.name} is running on port ${config.server.port}`);