diff --git a/.gitignore b/.gitignore index a905d4c..0589dbd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ node_modules secrets.js public -TODO.txt \ No newline at end of file +prodServer +TODO.txt diff --git a/README.md b/README.md index c263dd0..4359569 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,12 @@ This codebase has two criteria: * DB Setup I am sadly a WSL user (Yes, Windows, Subsystem, (for) Linux), so I can't run post-install pg-init scripts. So step 1 is make a new psql database named `meme-magic`. Thats it. - - If you wanted a DB named whatever you want it to be named go to `server/db/db` and modify line 7's `const memeDB = WhateverYouWant`. + + If you wanted a DB named whatever you want it to be named go to `serverES6/server/db/db` and modify line 7's `const memeDB = WhateverYouWant`. * Secrets - Make a `secrets.js` file in the root directory. It should contain: + Make a `secrets.js` file in the `serverES6` directory. It should contain: `export default { SessionKey: 'WhateverYouWant' @@ -34,17 +34,17 @@ That's it. Enjoy. ## Some Known Confusion I have had some annoying experiences with socket leakage and Node. Until I get around to having Redis be a part of the backend to deal with enabling more than 25 sockets per Node instance - I have a mechanism set up to ensure each user (being a person) only gets 1 socket per IP. *This means that if you try to open two tabs of your project on the same machine - you get Rick Rolled away from my site.* To disable such beautiful functionality simply go to `./browser/sockets/index.js`. You will see some well commented code about a certain socket event named `KickTroll` - just change its behavior to anything else or remove it. - + The only other one I can remember at present is the requirement to enter `y` or `n` on intialization of the DB to decide whether to force sync the DB. This too can easily be removed in the root directory `./app.js`: ``` const syncTruth = getYesNo(chalk.cyan('Rick, do you wanna get savage on this database? (Force Sync)')); - // If you want to disable this - change syncTruth to: + // If you want to disable this - change syncTruth to: // const syncTruth = false : wont ever forceSync. - // or + // or // const syncTruth = true : will always forceSync. - + startDB(syncTruth) .then(() => server.on('request', myServer)) .then(() => ioInit(server)) @@ -52,6 +52,10 @@ startDB(syncTruth) .finally(() => server.listen(_Port, () => console.log(chalk.magenta(`Meme magic has begun on Port ${_Port}`)))); ``` +## Dev and Production Scripts + +Use ```npm run dev``` while in development, which will run Webpack and Nodemon watchers. For production, use ```npm run build``` to build once with Webpack and Babel, then ```npm start``` to serve the built files. + ## Tests Tests are incoming. diff --git a/babelify.js b/babelify.js deleted file mode 100644 index 64f3554..0000000 --- a/babelify.js +++ /dev/null @@ -1,3 +0,0 @@ -// This enables babel in node. -require('babel-register'); -require('./app'); diff --git a/package.json b/package.json index 6894f1b..ac42743 100644 --- a/package.json +++ b/package.json @@ -1,23 +1,31 @@ { "name": "meme-magic", "version": "0.0.1", - "description": "A medium sized back-end boiler plate, with very little done on the front.", - "main": "app.js", + "description": "An A-Frame, React, Redux front-end with Sessions, Websockets, SQL, and Authentication built into the backend.", + "main": "serverES6/index.js", "scripts": { - "start": "webpack -w & nodemon --watch server -e js,html babelify.js" + "build": "webpack && babel serverES6 -d prodServer --presets es2015", + "start": "node prodServer", + "dev": "webpack -w & nodemon serverES6 --exec babel-node --presets es2015" + "postinstall": "node ./post-install.js" +}, + "engines": { + "node": ">=7.0.0" }, "author": "Eliot Szwajkowski", - "license": "ISC", + "email": "eliotpszw@gmail.com", + "license": "Apache-2.0", "dependencies": { "aframe": "^0.5.0", "axios": "^0.15.3", - "babel": "^6.5.2", - "babel-core": "^6.18.2", - "babel-loader": "^6.2.8", + "babel": "^6.23.0", + "babel-cli": "^6.23.0", + "babel-core": "^6.23.1", + "babel-loader": "^6.3.2", "babel-plugin-transform-object-rest-spread": "^6.20.2", - "babel-preset-es2015": "^6.18.0", - "babel-preset-react": "^6.16.0", - "babel-register": "^6.18.0", + "babel-preset-es2015": "^6.22.0", + "babel-preset-react": "^6.23.0", + "babel-register": "^6.23.0", "bluebird": "^3.4.6", "body-parser": "^1.15.2", "chalk": "^1.1.3", @@ -58,5 +66,25 @@ "standard": "^8.5.0", "volleyball": "^1.4.1", "webpack": "^1.13.3" - } + }, + "devDependencies": {}, + "repository": { + "type": "git", + "url": "git+https://github.com/leafoflegend/MemeMagic.git" + }, + "keywords": [ + "AFrame", + "React", + "Redux", + "Postgres", + "Sockets", + "Boiler", + "Plate", + "Sessions", + "Authentication" + ], + "bugs": { + "url": "https://github.com/leafoflegend/MemeMagic/issues" + }, + "homepage": "https://github.com/leafoflegend/MemeMagic#readme" } diff --git a/post-install.js b/post-install.js new file mode 100644 index 0000000..892c19f --- /dev/null +++ b/post-install.js @@ -0,0 +1 @@ +console.log("Please read the README.md, there are two additional steps required before this will work. Adding a secrets.js that exports a SessionKey string, and making a DB named 'meme-magic', or modify the code to have a DB named whatever you like."); diff --git a/app.js b/serverES6/index.js similarity index 100% rename from app.js rename to serverES6/index.js diff --git a/server/authentication/index.js b/serverES6/server/authentication/index.js similarity index 100% rename from server/authentication/index.js rename to serverES6/server/authentication/index.js diff --git a/server/configure/app-variables.js b/serverES6/server/configure/app-variables.js similarity index 100% rename from server/configure/app-variables.js rename to serverES6/server/configure/app-variables.js diff --git a/server/configure/index.js b/serverES6/server/configure/index.js similarity index 100% rename from server/configure/index.js rename to serverES6/server/configure/index.js diff --git a/server/configure/parsing.js b/serverES6/server/configure/parsing.js similarity index 100% rename from server/configure/parsing.js rename to serverES6/server/configure/parsing.js diff --git a/server/configure/security/index.js b/serverES6/server/configure/security/index.js similarity index 100% rename from server/configure/security/index.js rename to serverES6/server/configure/security/index.js diff --git a/server/configure/security/local.js b/serverES6/server/configure/security/local.js similarity index 100% rename from server/configure/security/local.js rename to serverES6/server/configure/security/local.js diff --git a/server/configure/static.js b/serverES6/server/configure/static.js similarity index 100% rename from server/configure/static.js rename to serverES6/server/configure/static.js diff --git a/server/db/db.js b/serverES6/server/db/db.js similarity index 100% rename from server/db/db.js rename to serverES6/server/db/db.js diff --git a/server/db/index.js b/serverES6/server/db/index.js similarity index 100% rename from server/db/index.js rename to serverES6/server/db/index.js diff --git a/server/db/models/index.js b/serverES6/server/db/models/index.js similarity index 100% rename from server/db/models/index.js rename to serverES6/server/db/models/index.js diff --git a/server/db/models/memes.js b/serverES6/server/db/models/memes.js similarity index 100% rename from server/db/models/memes.js rename to serverES6/server/db/models/memes.js diff --git a/server/db/models/trolls.js b/serverES6/server/db/models/trolls.js similarity index 100% rename from server/db/models/trolls.js rename to serverES6/server/db/models/trolls.js diff --git a/server/db/models/users.js b/serverES6/server/db/models/users.js similarity index 100% rename from server/db/models/users.js rename to serverES6/server/db/models/users.js diff --git a/server/index.js b/serverES6/server/index.js similarity index 100% rename from server/index.js rename to serverES6/server/index.js diff --git a/server/routes/index.js b/serverES6/server/routes/index.js similarity index 100% rename from server/routes/index.js rename to serverES6/server/routes/index.js diff --git a/server/routes/memes.js b/serverES6/server/routes/memes.js similarity index 100% rename from server/routes/memes.js rename to serverES6/server/routes/memes.js diff --git a/server/routes/sessions.js b/serverES6/server/routes/sessions.js similarity index 100% rename from server/routes/sessions.js rename to serverES6/server/routes/sessions.js diff --git a/server/routes/trolls.js b/serverES6/server/routes/trolls.js similarity index 100% rename from server/routes/trolls.js rename to serverES6/server/routes/trolls.js diff --git a/server/routes/users.js b/serverES6/server/routes/users.js similarity index 100% rename from server/routes/users.js rename to serverES6/server/routes/users.js diff --git a/server/sessions/index.js b/serverES6/server/sessions/index.js similarity index 100% rename from server/sessions/index.js rename to serverES6/server/sessions/index.js diff --git a/server/sockets/index.js b/serverES6/server/sockets/index.js similarity index 100% rename from server/sockets/index.js rename to serverES6/server/sockets/index.js diff --git a/server/utils/index.js b/serverES6/server/utils/index.js similarity index 100% rename from server/utils/index.js rename to serverES6/server/utils/index.js