deafmissoula-website/server/src/index.ts

51 lines
1.5 KiB
TypeScript

import 'dotenv/config';
import express from 'express';
import cors from 'cors';
import path from 'path';
import { connectDB } from './db';
import { errorHandler } from './middleware/errorHandler';
import authRoutes from './routes/auth';
import boardRoutes from './routes/board';
import eventRoutes from './routes/events';
import galleryRoutes from './routes/gallery';
import sponsorRoutes from './routes/sponsors';
import minuteRoutes from './routes/minutes';
import memberRoutes from './routes/members';
import emailRoutes from './routes/email';
const app = express();
const port = process.env.PORT ?? 801;
app.use(cors());
app.use(express.json());
// Serve uploaded files
app.use('/uploads', express.static(path.join(__dirname, '../../uploads')));
// API routes
app.use('/api/auth', authRoutes);
app.use('/api/board', boardRoutes);
app.use('/api/events', eventRoutes);
app.use('/api/gallery', galleryRoutes);
app.use('/api/sponsors', sponsorRoutes);
app.use('/api/minutes', minuteRoutes);
app.use('/api/members', memberRoutes);
app.use('/api', emailRoutes);
// Serve built React app
const clientBuild = path.join(__dirname, '../../client/build');
app.use(express.static(clientBuild));
app.use((_req, res) => {
res.sendFile(path.join(clientBuild, 'index.html'));
});
app.use(errorHandler);
connectDB()
.then(() => {
app.listen(port, () => console.log(`Server running on port ${port}`));
})
.catch((err) => {
console.error('Failed to connect to MongoDB:', err);
process.exit(1);
});