const express = require('express'); const { Pool } = require('pg'); const redis = require('redis'); const path = require('path'); const app = express(); const PORT = process.env.PORT || 3000; // PostgreSQL connection const pool = new Pool({ host: process.env.POSTGRES_HOST || 'postgres', port: process.env.POSTGRES_PORT || 5432, user: process.env.POSTGRES_USER || 'postgres', password: process.env.POSTGRES_PASSWORD || 'postgres', database: process.env.POSTGRES_DB || 'postgres' }); // Redis connection const redisClient = redis.createClient({ socket: { host: process.env.REDIS_HOST || 'redis', port: process.env.REDIS_PORT || 6379 } }); // Connect to Redis redisClient.connect().catch(console.error); // Test database connections pool.query('SELECT NOW()', (err, res) => { if (err) { console.error('PostgreSQL connection error:', err); } else { console.log('PostgreSQL connected successfully at:', res.rows[0].now); } }); redisClient.on('connect', () => { console.log('Redis connected successfully'); }); redisClient.on('error', (err) => { console.error('Redis connection error:', err); }); // Serve static files app.use(express.static('public')); // Health check endpoint app.get('/health', async (req, res) => { try { const pgResult = await pool.query('SELECT NOW()'); await redisClient.ping(); res.json({ status: 'healthy', postgres: 'connected', redis: 'connected', timestamp: pgResult.rows[0].now, git_commit: process.env.GIT_COMMIT || 'unknown', version: process.env.APP_VERSION || '1.0.0' }); } catch (error) { res.status(500).json({ status: 'unhealthy', error: error.message, git_commit: process.env.GIT_COMMIT || 'unknown', version: process.env.APP_VERSION || '1.0.0' }); } }); // Main route app.get('/', (req, res) => { res.sendFile(path.join(__dirname, 'public', 'index.html')); }); app.listen(PORT, '0.0.0.0', () => { console.log(`Server running on port ${PORT}`); });