const express = require('express'); const path = require('path'); const axios = require('axios'); const app = express(); const PORT = process.env.PORT || 3000; const API_URL = process.env.API_URL || 'http://localhost:5001'; // Serve static files app.use(express.static('public')); app.use(express.json()); // API proxy app.get('/api/news', async (req, res) => { try { const response = await axios.get(`${API_URL}/api/news`); res.json(response.data); } catch (error) { res.status(500).json({ error: 'Failed to fetch news' }); } }); app.get('/api/stats', async (req, res) => { try { const response = await axios.get(`${API_URL}/api/stats`); res.json(response.data); } catch (error) { res.status(500).json({ error: 'Failed to fetch stats' }); } }); app.post('/api/subscribe', async (req, res) => { try { const response = await axios.post(`${API_URL}/api/subscribe`, req.body); res.json(response.data); } catch (error) { res.status(error.response?.status || 500).json( error.response?.data || { error: 'Failed to subscribe' } ); } }); app.post('/api/unsubscribe', async (req, res) => { try { const response = await axios.post(`${API_URL}/api/unsubscribe`, req.body); res.json(response.data); } catch (error) { res.status(error.response?.status || 500).json( error.response?.data || { error: 'Failed to unsubscribe' } ); } }); // Ollama API proxy endpoints for admin dashboard app.get('/api/ollama/ping', async (req, res) => { try { const response = await axios.get(`${API_URL}/api/ollama/ping`); res.json(response.data); } catch (error) { res.status(500).json({ error: 'Failed to ping Ollama' }); } }); app.get('/api/ollama/gpu-status', async (req, res) => { try { const response = await axios.get(`${API_URL}/api/ollama/gpu-status`); res.json(response.data); } catch (error) { res.status(500).json({ error: 'Failed to get GPU status' }); } }); app.get('/api/ollama/test', async (req, res) => { try { const response = await axios.get(`${API_URL}/api/ollama/test`); res.json(response.data); } catch (error) { res.status(500).json({ error: 'Failed to test Ollama' }); } }); app.get('/api/ollama/models', async (req, res) => { try { const response = await axios.get(`${API_URL}/api/ollama/models`); res.json(response.data); } catch (error) { res.status(500).json({ error: 'Failed to get models' }); } }); app.get('/api/ollama/config', async (req, res) => { try { const response = await axios.get(`${API_URL}/api/ollama/config`); res.json(response.data); } catch (error) { res.status(500).json({ error: 'Failed to get config' }); } }); app.listen(PORT, () => { console.log(`Frontend server running on http://localhost:${PORT}`); console.log(`Admin dashboard: http://localhost:${PORT}/admin.html`); });