93 lines
2.4 KiB
JavaScript
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; |