| const express = require('express'); |
| const http = require('http'); |
| const cors = require('cors'); |
| const { Server } = require('socket.io'); |
| const dotenv = require('dotenv'); |
|
|
| dotenv.config(); |
|
|
| const authRoutes = require('./routes/auth'); |
| const projectRoutes = require('./routes/projects'); |
| const fileRoutes = require('./routes/files'); |
| const aiRoutes = require('./routes/ai'); |
| const deployRoutes = require('./routes/deploy'); |
| const { setupTerminal } = require('./routes/terminal'); |
| const { authMiddleware } = require('./middleware/auth'); |
| const { rateLimiter } = require('./middleware/ratelimit'); |
|
|
| const app = express(); |
| const server = http.createServer(app); |
|
|
| |
| app.use(cors({ |
| origin: process.env.FRONTEND_URL || 'http://localhost:5173', |
| credentials: true, |
| })); |
| app.use(express.json({ limit: '10mb' })); |
| app.use(rateLimiter); |
|
|
| |
| app.get('/', (req, res) => { |
| res.send('π Indus IDE Backend is running successfully!'); |
| }); |
|
|
| |
| app.get('/api/health', (req, res) => { |
| res.json({ status: 'ok', service: 'indus-backend', timestamp: new Date().toISOString() }); |
| }); |
|
|
| |
| app.use('/api/auth', authRoutes); |
| app.use('/api/projects', authMiddleware, projectRoutes); |
| app.use('/api/files', authMiddleware, fileRoutes); |
| app.use('/api/ai', aiRoutes); |
| app.use('/api/deploy', authMiddleware, deployRoutes); |
|
|
| |
| setupTerminal(server); |
|
|
| |
| app.use((err, req, res, next) => { |
| console.error('Server error:', err.message); |
| res.status(500).json({ error: 'Internal server error' }); |
| }); |
|
|
| const PORT = process.env.PORT || 4000; |
| server.listen(PORT, () => { |
| console.log(`π Indus Backend running on port ${PORT}`); |
| console.log(` Ollama URL: ${process.env.OLLAMA_URL || 'http://localhost:11434'}`); |
| }); |
|
|
| module.exports = { app, server }; |
|
|