Files
classroomio/apps/backend/server.js
T

76 lines
2.1 KiB
JavaScript
Raw Normal View History

require('dotenv').config();
const express = require('express');
const rateLimit = require('express-rate-limit');
const cors = require('cors');
const bodyParser = require('body-parser');
2024-11-02 17:22:15 +01:00
// const sentry = require('@sentry/node');
// const { ProfilingIntegration } = require('@sentry/profiling-node');
const uploadVideo = require('./src/routes/uploadVideo');
const downloadCertificate = require('./src/routes/downloadCertificate');
const downloadLesson = require('./src/routes/downloadLesson');
const downloadCourse = require('./src/routes/downloadCourse');
const katex = require('./src/routes/katex');
2024-04-12 04:57:19 +01:00
const sendEmail = require('./src/routes/sendEmail');
2024-11-02 17:22:15 +01:00
// sentry.init({
// dsn: process.env.SENTRY_DNS || '',
// integrations: [new ProfilingIntegration()],
// tracesSampleRate: 1.0,
// profilesSampleRate: 1.0
// });
2024-09-30 01:49:59 +01:00
// Express server
const app = express();
const port = process.env.PORT || 3002;
app.use(express.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cors());
// Rate limiting middleware
const limiter = rateLimit({
windowMs: 1000,
max: 10
});
app.use(limiter);
2024-09-30 01:49:59 +01:00
// Integrate Sentry middleware
2024-11-02 17:22:15 +01:00
// app.use(sentry.Handlers.requestHandler());
// app.use(sentry.Handlers.errorHandler());
2024-09-30 01:49:59 +01:00
// Register routes
app.use('/downloadCertificate', downloadCertificate);
app.use('/downloadLesson', downloadLesson);
app.use('/downloadCourse', downloadCourse);
app.use('/uploadVideo', uploadVideo);
app.use('/katex', katex);
2024-04-12 04:57:19 +01:00
app.use('/sendEmail', sendEmail);
app.get('/', (req, res) => {
res.send('Welcome to ClassroomIO');
});
2024-09-30 01:49:59 +01:00
// Start server
app.listen(port, () => {
console.log(`ClassroomIO Backend listening on port ${port}!`);
});
2024-09-30 01:49:59 +01:00
// Handle uncaught exceptions
process.on('uncaughtException', (err) => {
2024-09-30 01:49:59 +01:00
console.error('Uncaught error', err);
});
// Error-handling middleware
app.use((error, req, res, next) => {
console.error('Exception error caught:', error);
// Capture and send the error to Sentry
2024-11-02 17:22:15 +01:00
// sentry.captureException(error);
2024-09-30 01:49:59 +01:00
// Respond with a 500 Internal Server Error
res.status(500).json({ error: 'Internal Server Error' });
});