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}`));