Files
2026-08-23 09:04:47 +00:00

69 lines
2.8 KiB
JavaScript

const express = require('express');
const cors = require('cors');
const path = require('path');
const fs = require('fs');
require('dotenv').config();
const db = require('./config/db');
const authRoutes = require('./routes/auth');
const memberRoutes = require('./routes/members');
const guestRoutes = require('./routes/guests');
const recommendationRoutes = require('./routes/recommendations');
const honorRoutes = require('./routes/honors');
const eventRoutes = require('./routes/events');
const statsRoutes = require('./routes/stats');
const adminRoutes = require('./routes/admin');
const invitationRoutes = require('./routes/invitation');
const absenceRoutes = require('./routes/absences');
const galleryRoutes = require('./routes/gallery');
const pushRoutes = require('./routes/push');
const notificationRoutes = require('./routes/notifications');
const presentationRoutes = require('./routes/presentation');
const memberSlidesRoutes = require('./routes/memberSlides');
const exportRoutes = require('./routes/export');
const activityLogRoutes = require('./routes/activityLog');
const presentationEditorRoutes = require('./routes/presentationEditor');
const { startPushCron } = require('./services/pushNotifications');
const app = express();
const uploadsDir = path.join(__dirname, 'uploads');
if (!fs.existsSync(uploadsDir)) fs.mkdirSync(uploadsDir, { recursive: true });
const galleryDir = path.join(__dirname, 'gallery');
if (!fs.existsSync(galleryDir)) fs.mkdirSync(galleryDir, { recursive: true });
app.use(cors());
app.use(express.json({ limit: '100mb' }));
app.use('/uploads', express.static(uploadsDir));
app.use('/gallery', express.static(galleryDir));
app.use('/api/auth', authRoutes);
app.use('/api/members', memberRoutes);
app.use('/api/guests', guestRoutes);
app.use('/api/recommendations', recommendationRoutes);
app.use('/api/honors', honorRoutes);
app.use('/api/events', eventRoutes);
app.use('/api/stats', statsRoutes);
app.use('/api/admin', adminRoutes);
app.use('/api/admin/presentation-editor', presentationEditorRoutes);
app.use('/api/public/invitation', invitationRoutes);
app.use('/invitation', invitationRoutes);
app.use('/api/absences', absenceRoutes);
app.use('/api/gallery', galleryRoutes);
app.use('/api/push', pushRoutes);
app.use('/api/notifications', notificationRoutes);
app.use('/api/presentation', presentationRoutes);
app.use('/api/member-slides', memberSlidesRoutes);
app.use('/api/export', exportRoutes);
app.use('/api/activity-logs', activityLogRoutes);
app.use('/member-slides', express.static(path.join(__dirname, 'member_slides')));
app.get('/api/health', (req, res) => res.json({ status: 'ok' }));
startPushCron();
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Backend running on port ${PORT}`));