server.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import express from 'express';
  2. import session from 'express-session';
  3. import memorystore from 'memorystore';
  4. import ejs from 'ejs';
  5. import Docker from 'dockerode';
  6. import { router } from './router/index.js';
  7. import { sequelize } from './database/models.js';
  8. export const docker = new Docker();
  9. const app = express();
  10. const MemoryStore = memorystore(session);
  11. const PORT = process.env.PORT || 8000;
  12. // Session middleware
  13. const sessionMiddleware = session({
  14. store: new MemoryStore({ checkPeriod: 86400000 }), // Prune expired entries every 24h
  15. secret: "keyboard cat",
  16. resave: false,
  17. saveUninitialized: false,
  18. cookie:{
  19. secure: false,
  20. httpOnly: false,
  21. maxAge: 3600000 * 8 // Session max age in milliseconds. 3600000 = 1 hour.
  22. }
  23. });
  24. // Express middleware
  25. app.set('view engine', 'html');
  26. app.engine('html', ejs.renderFile);
  27. app.use([
  28. express.static('public'),
  29. express.urlencoded({ extended: true }),
  30. sessionMiddleware,
  31. router
  32. ]);
  33. // Initialize server
  34. app.listen(PORT, async () => {
  35. async function init() {// I made sure the console.logs and emojis lined up
  36. try { await sequelize.authenticate().then(
  37. () => { console.log('DB Connection: ✔️') }); }
  38. catch { console.log('DB Connection: ❌'); }
  39. try { await sequelize.sync().then(
  40. () => { console.log('Synced Models: ✔️') }); }
  41. catch { console.log('Synced Models: ❌'); } }
  42. await init().then(() => {
  43. console.log(`Listening on http://localhost:${PORT}`);
  44. });
  45. });