From bf2cac25951497e8d1b1ab62aff4fca053f0d5e0 Mon Sep 17 00:00:00 2001 From: AlecM33 Date: Thu, 12 May 2022 12:08:16 -0400 Subject: [PATCH] updates for deployment --- Procfile | 2 +- README.md | 4 ++- server/main.js => index.js | 38 ++++++++++++++-------------- package.json | 15 ++++++----- server/modules/Logger.js | 2 +- server/modules/ServerBootstrapper.js | 2 +- 6 files changed, 33 insertions(+), 30 deletions(-) rename server/main.js => index.js (52%) diff --git a/Procfile b/Procfile index 8fbd1b9..1da0cd6 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: node main.js +web: node index.js diff --git a/README.md b/README.md index f8cd51b..0a2edb2 100644 --- a/README.md +++ b/README.md @@ -34,13 +34,15 @@ The application prioritizes responsiveness. A key scenario would be when a group ## Tech Stack -This is a Node.js application. It is written purely using JavaScript/HTML/CSS. The main dependencies are +This is a Node.js application. It is written purely using JavaScript/HTML/CSS. The index dependencies are Express.js and Socket.io. It is currently cloud hosted using the Google App Engine. ## Contributing and Developers' Guide ### Running Locally +The entrypoint for the application is in `index.js` at the root. + If you haven't already, install Node.js. This should include the node package manager, npm. diff --git a/server/main.js b/index.js similarity index 52% rename from server/main.js rename to index.js index 9aeb704..28fcfce 100644 --- a/server/main.js +++ b/index.js @@ -4,9 +4,9 @@ const express = require('express'); const path = require('path'); const app = express(); const bodyParser = require('body-parser'); -const GameManager = require('./modules/GameManager.js'); -const globals = require('./config/globals'); -const ServerBootstrapper = require('./modules/ServerBootstrapper'); +const GameManager = require('./server/modules/GameManager.js'); +const globals = require('./server/config/globals'); +const ServerBootstrapper = require('./server/modules/ServerBootstrapper'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ @@ -15,14 +15,14 @@ app.use(bodyParser.urlencoded({ const args = ServerBootstrapper.processCLIArgs(); -const logger = require('./modules/Logger')(args.logLevel); +const logger = require('./server/modules/Logger')(args.logLevel); logger.info('LOG LEVEL IS: ' + args.logLevel); -const main = ServerBootstrapper.createServerWithCorrectHTTPProtocol(app, args.useHttps, args.port, logger); +const index = ServerBootstrapper.createServerWithCorrectHTTPProtocol(app, args.useHttps, args.port, logger); -app.set('port', args.port); +app.set('port', parseInt(process.env.PORT) || args.port || 8080); -const inGameSocketServer = ServerBootstrapper.createSocketServer(main, app, args.port, logger); +const inGameSocketServer = ServerBootstrapper.createSocketServer(index, app, args.port, logger); const gameNamespace = ServerBootstrapper.createGameSocketNamespace(inGameSocketServer, logger); let gameManager; @@ -42,35 +42,35 @@ gameNamespace.on('connection', function (socket) { }); /* api endpoints */ -const games = require('./api/GamesAPI'); +const games = require('./server/api/GamesAPI'); app.use('/api/games', games); /* serve all the app's pages */ app.use('/manifest.json', (req, res) => { - res.sendFile(path.join(__dirname, '../manifest.json')); + res.sendFile(path.join(__dirname, './manifest.json')); }); app.use('/favicon.ico', (req, res) => { - res.sendFile(path.join(__dirname, '../client/favicon_package/favicon.ico')); + res.sendFile(path.join(__dirname, './client/favicon_package/favicon.ico')); }); -const router = require('./routes/router'); +const router = require('./server/routes/router'); app.use('', router); -app.use('/dist', express.static(path.join(__dirname, '../client/dist'))); +app.use('/dist', express.static(path.join(__dirname, './client/dist'))); // set up routing for static content that isn't being bundled. -app.use('/images', express.static(path.join(__dirname, '../client/src/images'))); -app.use('/styles', express.static(path.join(__dirname, '../client/src/styles'))); -app.use('/webfonts', express.static(path.join(__dirname, '../client/src/webfonts'))); +app.use('/images', express.static(path.join(__dirname, './client/src/images'))); +app.use('/styles', express.static(path.join(__dirname, './client/src/styles'))); +app.use('/webfonts', express.static(path.join(__dirname, './client/src/webfonts'))); app.use('/robots.txt', (req, res) => { - res.sendFile(path.join(__dirname, '../client/robots.txt')); + res.sendFile(path.join(__dirname, './client/robots.txt')); }); app.use(function (req, res) { - res.sendFile(path.join(__dirname, '../client/src/views/404.html')); + res.sendFile(path.join(__dirname, './client/src/views/404.html')); }); -main.listen(args.port, function () { - logger.info(`Starting server on port ${args.port}`); +index.listen(app.get('port'), function () { + logger.info(`Starting server on port ${app.get('port')}`); }); diff --git a/package.json b/package.json index bbafe9b..c0fa784 100644 --- a/package.json +++ b/package.json @@ -8,18 +8,19 @@ "prestart": "npm run bundle", "gcp-build": "webpack --config client/webpack/webpack-prod.config.js", "build:dev": "webpack --watch --config client/webpack/webpack-dev.config.js --mode=development", - "start:dev": "NODE_ENV=development nodemon server/main.js", - "start:dev:no-hot-reload": "NODE_ENV=development && node server/main.js", - "start:dev:windows": "SET NODE_ENV=development && nodemon server/main.js", - "start:dev:windows:no-hot-reload": "SET NODE_ENV=development && node server/main.js", - "start": "NODE_ENV=production node server/main.js -- loglevel=trace port=8080", - "start:windows": "SET NODE_ENV=production && node server/main.js -- loglevel=warn port=8080", + "start:dev": "NODE_ENV=development nodemon index.js", + "start:dev:no-hot-reload": "NODE_ENV=development && node index.js", + "start:dev:windows": "SET NODE_ENV=development && nodemon index.js", + "start:dev:windows:no-hot-reload": "SET NODE_ENV=development && node index.js", + "start": "NODE_ENV=production node index.js -- loglevel=info", + "start:windows": "SET NODE_ENV=production && node index.js -- loglevel=warn port=8080", "test": "jasmine && karma start --single-run --browsers ChromeHeadless karma.conf.js", "test:unit": "jasmine", "test:e2e": "karma start --single-run --browsers ChromeHeadless karma.conf.js" }, + "main": "index.js", "engines": { - "node": "14.15.3" + "node": ">= 14.0.0" }, "author": "", "license": "ISC", diff --git a/server/modules/Logger.js b/server/modules/Logger.js index 80d5d96..72c7899 100644 --- a/server/modules/Logger.js +++ b/server/modules/Logger.js @@ -37,7 +37,7 @@ module.exports = function (logLevel = globals.LOG_LEVEL.INFO) { || logLevel === globals.LOG_LEVEL.WARN || logLevel === globals.LOG_LEVEL.DEBUG || logLevel === globals.LOG_LEVEL.ERROR - ) { return; } + ) return; const now = new Date(); console.error('TRACE ', now.toGMTString(), ': ', message); diff --git a/server/modules/ServerBootstrapper.js b/server/modules/ServerBootstrapper.js index c24914a..ce52597 100644 --- a/server/modules/ServerBootstrapper.js +++ b/server/modules/ServerBootstrapper.js @@ -18,7 +18,7 @@ const ServerBootstrapper = { .map((arg) => { return /port=(\d+)/.exec(arg)[1]; })[0] || 5000; - const logLevel = process.env.LOG_LEVEL || args + const logLevel = args .filter((arg) => { return /loglevel=[a-zA-Z]+/.test(arg); })