import dotenv from 'dotenv'; import express from 'express'; import cors from 'cors'; import morgan from 'morgan'; import fs from 'fs'; import path from 'path'; import { errorHandler } from './middleware/errorHandler'; import { languageMiddleware } from './middleware/languageMiddleware'; import config from './config'; import legalRoutes from './routes/legalRoutes'; import voiceRoutes from './routes/voiceRoutes'; import ttsRoutes from './routes/ttsRoutes'; import twilioRoutes from './routes/twilioRoutes'; // Load environment variables dotenv.config(); const app = express(); // Create required directories const uploadsDir = path.join(__dirname, '../tmp/uploads'); const ttsDir = path.join(__dirname, '../tmp/tts'); fs.mkdirSync(uploadsDir, { recursive: true }); fs.mkdirSync(ttsDir, { recursive: true }); // Middleware app.use(cors()); app.use(express.json()); app.use(express.urlencoded({ extended: true })); app.use(morgan('dev')); // Language detection middleware app.use(languageMiddleware); // Routes app.get('/', (req, res) => { res.json({ message: 'Welcome to the API', detectedLanguage: req.language?.name || 'English', }); }); // API Routes app.use('/api/legal', legalRoutes); app.use('/api/voice', voiceRoutes); app.use('/api/tts', ttsRoutes); app.use('/api/twilio', twilioRoutes); // Error handling middleware app.use(errorHandler); const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`Server is running on port ${port}`); console.log('Environment variables loaded:'); console.log('- PERPLEXITY_API_KEY:', process.env.PERPLEXITY_API_KEY ? '✓' : '✗'); console.log('- OPENAI_API_KEY:', process.env.OPENAI_API_KEY ? '✓' : '✗'); console.log('- ELEVENLABS_API_KEY:', process.env.ELEVENLABS_API_KEY ? '✓' : '✗'); console.log('- TWILIO_ACCOUNT_SID:', process.env.TWILIO_ACCOUNT_SID ? '✓' : '✗'); console.log('- TWILIO_AUTH_TOKEN:', process.env.TWILIO_AUTH_TOKEN ? '✓' : '✗'); console.log('- TWILIO_PHONE_NUMBER:', process.env.TWILIO_PHONE_NUMBER ? '✓' : '✗'); });