const App = require('./core/App'); const { ErrorHandler } = require('./core/ErrorHandler'); const logger = require('./utils/logger'); const errorHandler = new ErrorHandler(); errorHandler.initialize(); const app = new App(); async function main() { try { await app.bootstrap(); await app.start(); } catch (error) { logger.error('Failed to start application', { error: error.message, stack: error.stack }); process.exit(1); } } async function gracefulShutdown(signal) { if (app.isStarted()) { logger.info(`Received ${signal}, shutting down gracefully`); await app.stop(); } process.exit(0); } process.on('SIGINT', () => gracefulShutdown('SIGINT')); process.on('SIGTERM', () => gracefulShutdown('SIGTERM')); process.on('exit', () => { logger.info('Process exiting'); }); main(); module.exports = app;