| 1 | require('dotenv').config();
|
|---|
| 2 | const express = require('express');
|
|---|
| 3 | const path = require('path');
|
|---|
| 4 | const database = require('./config/database');
|
|---|
| 5 | const routes = require('./routes');
|
|---|
| 6 |
|
|---|
| 7 | const app = express();
|
|---|
| 8 | const PORT = process.env.PORT || 3000;
|
|---|
| 9 |
|
|---|
| 10 | app.set('view engine', 'ejs');
|
|---|
| 11 | app.set('views', path.join(__dirname, '../views'));
|
|---|
| 12 |
|
|---|
| 13 | app.use(express.json());
|
|---|
| 14 | app.use(express.urlencoded({ extended: true }));
|
|---|
| 15 | app.use(express.static(path.join(__dirname, '../public')));
|
|---|
| 16 | app.use('/', routes);
|
|---|
| 17 |
|
|---|
| 18 | app.use((req, res) => {
|
|---|
| 19 | res.status(404).render('error', {
|
|---|
| 20 | message: 'Page not found',
|
|---|
| 21 | error: { status: 404 }
|
|---|
| 22 | });
|
|---|
| 23 | });
|
|---|
| 24 |
|
|---|
| 25 | app.use((err, req, res, next) => {
|
|---|
| 26 | console.error(err.stack);
|
|---|
| 27 | res.status(500).render('error', {
|
|---|
| 28 | message: 'Something went wrong!',
|
|---|
| 29 | error: process.env.NODE_ENV === 'development' ? err : {}
|
|---|
| 30 | });
|
|---|
| 31 | });
|
|---|
| 32 |
|
|---|
| 33 | async function startServer() {
|
|---|
| 34 | try {
|
|---|
| 35 | await database.connect();
|
|---|
| 36 |
|
|---|
| 37 | app.listen(PORT, () => {
|
|---|
| 38 | console.log(`Server running on http://localhost:${PORT}`);
|
|---|
| 39 | });
|
|---|
| 40 | } catch (error) {
|
|---|
| 41 | console.error('Failed to start server:', error);
|
|---|
| 42 | process.exit(1);
|
|---|
| 43 | }
|
|---|
| 44 | }
|
|---|
| 45 |
|
|---|
| 46 | process.on('SIGINT', async () => {
|
|---|
| 47 | console.log('\nShutting down gracefully...');
|
|---|
| 48 | await database.close();
|
|---|
| 49 | process.exit(0);
|
|---|
| 50 | });
|
|---|
| 51 |
|
|---|
| 52 | process.on('SIGTERM', async () => {
|
|---|
| 53 | console.log('\nShutting down gracefully...');
|
|---|
| 54 | await database.close();
|
|---|
| 55 | process.exit(0);
|
|---|
| 56 | });
|
|---|
| 57 |
|
|---|
| 58 | startServer(); |
|---|