codenuk_backend_mine/services/template-manager/src/app.js

93 lines
2.4 KiB
JavaScript

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;