import express from 'express'; import cors from 'cors'; import sqlite3 from 'sqlite3'; import { open } from 'sqlite'; import dotenv from 'dotenv'; import path from 'path'; dotenv.config(); const app = express(); const port = process.env.PORT || 3000; // Middleware app.use(cors()); app.use(express.json()); // Database connection let db; async function initializeDatabase() { try { db = await open({ filename: './database.sqlite', driver: sqlite3.Database }); await db.exec(` CREATE TABLE IF NOT EXISTS events ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, description TEXT, date TEXT NOT NULL, location TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP ) `); console.log('Database initialized successfully'); } catch (error) { console.error('Error initializing database:', error); } } // Serve static files from the frontend build directory app.use(express.static(path.join(__dirname, '../frontend/build'))); // API Routes app.get('/api/events', async (req, res) => { try { const rows = await db.all('SELECT * FROM events'); console.log('Fetched events:', rows); res.json(rows); } catch (error) { console.error('Error fetching events:', error); res.status(500).json({ error: 'Internal server error', details: error instanceof Error ? error.message : 'Unknown error' }); } }); app.post('/api/events', async (req, res) => { try { const { title, description, date, location } = req.body; console.log('Creating event with data:', { title, description, date, location }); const result = await db.run( 'INSERT INTO events (title, description, date, location) VALUES (?, ?, ?, ?)', [title, description, date, location] ); console.log('Event created:', result); res.status(201).json(result); } catch (error) { console.error('Error creating event:', error); res.status(500).json({ error: 'Internal server error', details: error instanceof Error ? error.message : 'Unknown error' }); } }); // Serve the React app for all other routes app.get('*', (req, res) => { res.sendFile(path.join(__dirname, '../frontend/build/index.html')); }); // Start server app.listen(port, () => { console.log(`Server running on port ${port}`); initializeDatabase(); });