require('dotenv').config(); const express = require('express'); const cors = require('cors'); const helmet = require('helmet'); const morgan = require('morgan'); // Import database const database = require('./config/database'); // Import routes (we'll create these next) const templateRoutes = require('./routes/templates'); const featureRoutes = require('./routes/features'); const learningRoutes = require('./routes/learning'); const app = express(); const PORT = process.env.PORT || 8009; // Middleware app.use(helmet()); app.use(cors()); app.use(morgan('combined')); app.use(express.json({ limit: '10mb' })); app.use(express.urlencoded({ extended: true })); // Routes app.use('/api/templates', templateRoutes); app.use('/api/features', featureRoutes); app.use('/api/learning', learningRoutes); // Health check endpoint app.get('/health', (req, res) => { res.status(200).json({ status: 'healthy', service: 'template-manager', version: '1.0.0', timestamp: new Date().toISOString(), uptime: process.uptime(), features: { template_management: true, feature_learning: true, usage_tracking: true, self_improving: true } }); }); // Root endpoint app.get('/', (req, res) => { res.json({ message: 'Template Manager Service - Self-Learning Feature Database', version: '1.0.0', endpoints: { health: '/health', templates: '/api/templates', features: '/api/features', learning: '/api/learning' } }); }); // Error handling middleware app.use((err, req, res, next) => { console.error('❌ Error:', err.stack); res.status(500).json({ error: 'Internal Server Error', message: process.env.NODE_ENV === 'development' ? err.message : 'Something went wrong' }); }); // 404 handler app.use('*', (req, res) => { res.status(404).json({ error: 'Not Found', message: `Route ${req.originalUrl} not found` }); }); // Graceful shutdown process.on('SIGINT', async () => { console.log('🛑 Shutting down Template Manager...'); await database.close(); process.exit(0); }); // Start server app.listen(PORT, '0.0.0.0', () => { console.log('🚀 Template Manager Service started'); console.log(`📡 Server running on http://0.0.0.0:${PORT}`); console.log(`🏥 Health check: http://0.0.0.0:${PORT}/health`); console.log('🎯 Self-learning feature database ready!'); }); module.exports = app;