{"_id":"vue-express-mongo-boilerplate","_rev":"2-ccdf7db6b1de81f4b8370d81f3d7b8ef","name":"vue-express-mongo-boilerplate","description":"Express NodeJS application server boilerplate with Mongo and VueJS","dist-tags":{"latest":"0.9.0"},"versions":{"0.9.0":{"name":"vue-express-mongo-boilerplate","version":"0.9.0","title":"Vue-Express-Mongo BoilerPlate","description":"Express NodeJS application server boilerplate with Mongo and VueJS","main":"server/index.js","scripts":{"build":"webpack --progress --colors --config build/webpack.prod.config.js","build:server":"webpack --progress --colors --config build/webpack.server.config.js","dev":"cross-env NODE_ENV=development nodemon --debug","start":"cross-env NODE_ENV=production node server/index.js","start:bundle":"cross-env NODE_ENV=production node server/bundle.js","start:cluster":"cross-env NODE_ENV=production node cluster.js","test:unit":"cross-env NODE_ENV=test mocha --require babel-core/register --reporter spec tests/unit","test:e2e:nightmare":"cross-env NODE_ENV=test mocha --require babel-core/register --timeout 30000 --reporter spec tests/e2e","test:e2e":"node tests/e2e/runner.js","test":"npm run test:unit && npm run test:e2e","ci":"cross-env NODE_ENV=test nodemon --exec \"mocha --require babel-core/register --reporter dot --watch tests/unit\" tests/unit","lint":"eslint --ext=.js,.vue client server","lint:fix":"eslint --fix --ext=.js,.vue client server","snyk-protect":"snyk protect","typings":"typings install","prepublish":"npm run snyk-protect"},"repository":{"type":"git","url":"git+ssh://git@github.com/icebob/vue-express-mongo-boilerplate.git"},"keywords":["boilerplate","express","mongo","vue","mongodb","hackaton","bootstrap","starter"],"config":{"dbName":"boilerplate"},"author":{"name":"Icebob"},"license":"MIT","dependencies":{"agenda":"0.9.0","async":"2.1.4","axios":"0.15.3","bcrypt-nodejs":"0.0.3","body-parser":"1.15.2","chalk":"1.1.3","cli-table2":"0.2.0","clui":"0.3.1","compression":"1.6.2","connect-mongo":"1.3.2","cookie-parser":"1.4.3","cross-env":"3.1.3","csurf":"1.9.0","express":"4.14.0","express-flash":"0.0.2","express-list-endpoints":"3.0.0","express-session":"1.14.2","express-status-monitor":"0.1.7","express-validator":"3.1.2","fakerator":"0.3.0","glob":"7.1.1","graphql":"0.8.2","graphql-server-express":"0.4.3","graphql-subscriptions":"0.2.2","graphql-tools":"0.8.4","hashids":"1.1.1","helmet":"3.2.0","helmet-crossdomain":"0.1.0","i18next":"4.1.4","i18next-express-middleware":"1.0.2","i18next-node-fs-backend":"0.1.3","ioredis":"2.4.3","le_node":"1.7.0","lodash":"4.17.3","method-override":"2.3.7","mkdirp":"0.5.1","moment":"2.17.1","mongoose":"4.7.5","mongoose-auto-increment":"5.0.1","morgan":"1.7.0","netjet":"1.1.3","node-sass":"4.1.1","nodemailer":"2.7.0","nodemailer-html-to-text":"2.1.0","nodemailer-mailgun-transport":"1.2.4","nodemailer-sendgrid-transport":"0.2.0","object-hash":"1.1.5","passport":"0.3.2","passport-facebook":"2.1.1","passport-github":"1.1.0","passport-google-oauth":"1.0.0","passport-local":"1.0.0","passport-localapikey-update":"0.5.0","passport-twitter":"1.0.4","pretty-bytes":"4.0.2","pug":"2.0.0-beta6","require-webpack-compat":"3.0.0","serve-favicon":"2.3.2","slug":"0.9.1","snyk":"^1.22.1","socket.io":"1.7.2","socket.io-client":"1.7.2","uuid-token-generator":"0.5.0","winston":"2.3.0","winston-daily-rotate-file":"1.4.0","winston-graylog2":"0.5.2","winston-loggly-bulk":"1.3.4","winston-logsene":"1.2.1","winston-logzio":"1.0.3","winston-papertrail":"1.0.4"},"devDependencies":{"apollo-client":"0.5.25","autoprefixer":"6.6.0","babel":"6.5.2","babel-core":"6.21.0","babel-loader":"6.2.10","babel-plugin-transform-runtime":"6.15.0","babel-preset-es2015":"6.18.0","babel-preset-stage-0":"6.16.0","babel-runtime":"6.20.0","chai":"3.5.0","chromedriver":"2.26.1","cross-spawn":"5.0.1","css-loader":"0.26.1","del":"2.2.2","es6-promise":"4.0.5","eslint":"3.12.2","eslint-friendly-formatter":"2.0.6","eslint-loader":"1.6.1","eslint-plugin-html":"1.7.0","extract-text-webpack-plugin":"2.0.0-beta.4","file-loader":"0.9.0","graphql-tag":"1.1.2","i18next-browser-languagedetector":"1.0.1","i18next-xhr-backend":"1.2.1","jquery":"3.1.1","json-loader":"0.5.4","marked":"0.3.6","mocha":"3.2.0","nightwatch":"0.9.11","postcss-loader":"1.2.1","precss":"1.4.0","raw-loader":"0.5.1","request":"2.79.0","sass-loader":"4.1.1","selenium-server":"3.0.1","sinon":"1.17.7","sinon-chai":"2.8.0","stats-webpack-plugin":"0.4.2","style-loader":"0.13.1","toastr":"2.1.2","typings":"2.1.0","url-loader":"0.5.7","uuid":"3.0.1","vue":"2.1.8","vue-form-generator":"2.0.0-beta1","vue-html-loader":"1.2.3","vue-loader":"10.0.2","vue-router":"2.1.1","vue-template-compiler":"2.1.8","vue-websocket":"0.2.1","vuex":"2.1.1","webpack":"v2.2.0-rc.3","webpack-dev-middleware":"1.9.0","webpack-dev-server":"2.2.0-rc.0","webpack-hot-middleware":"2.14.0","webpack-merge":"2.0.0"},"snyk":true,"gitHead":"df4f79d1d812d4bfac464ee2926ed6c9b5475923","bugs":{"url":"https://github.com/icebob/vue-express-mongo-boilerplate/issues"},"homepage":"https://github.com/icebob/vue-express-mongo-boilerplate#readme","_id":"vue-express-mongo-boilerplate@0.9.0","_shasum":"d84002e3109b2c70379a8a282713ef0fe1ef1314","_from":".","_npmVersion":"4.1.1","_nodeVersion":"6.9.4","_npmUser":{"name":"mresende","email":"mpresendex@gmail.com"},"dist":{"shasum":"d84002e3109b2c70379a8a282713ef0fe1ef1314","tarball":"https://registry.npmjs.org/vue-express-mongo-boilerplate/-/vue-express-mongo-boilerplate-0.9.0.tgz","integrity":"sha512-WVDFEmasOKmAP/LLYfrbNkgP0edTiSIdSIjZViW0FwzrcMeIv2+A5V+BPD0mUY70rRo1819OdEbZvNuMW4aqUA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICpzE1EnM5IVKFhlNyXpj2OCOymHHaXFt6Zfjjl+syasAiEAzEVWPBgzdHsIXJwJjM21Ceyxae5aAGBcD/iW4NSV6/s="}]},"maintainers":[{"name":"mresende","email":"mpresendex@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/vue-express-mongo-boilerplate-0.9.0.tgz_1485782465147_0.9694607509300113"}}},"readme":"# vue-express-mongo-boilerplate #\n[![Known Vulnerabilities](https://snyk.io/test/github/icebob/vue-express-mongo-boilerplate/badge.svg)](https://snyk.io/test/github/icebob/vue-express-mongo-boilerplate)\n![Node 6](https://img.shields.io/badge/node-6.x.x-green.svg)\n![VueJS 2](https://img.shields.io/badge/vuejs-2.1.8-green.svg)\n![Webpack 2](https://img.shields.io/badge/webpack-2.2.0-green.svg)\n\n<img src=\"http://vuejs.org/images/logo.png\" width=\"50\">\n<img src=\"https://coligo.io/images/express.svg\" width=\"100\">\n<img src=\"https://upload.wikimedia.org/wikipedia/en/thumb/4/45/MongoDB-Logo.svg/527px-MongoDB-Logo.svg.png\" width=\"100\">\n<img src=\"https://worldvectorlogo.com/logos/nodejs-icon.svg\" width=\"50\">\n<img src=\"https://camo.githubusercontent.com/66747a6e05a799aec9c6e04a3e721ca567748e8b/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313336353838312f313931383337332f32653035373166612d376462632d313165332d383436352d3839356632393164343366652e706e67\" width=\"100\">\n\n**This project is under heavy development!!!**\n\nThis is a VueJS webapp boilerplate project with ExpressJS + Mongo server. Not an out-of-box webapp.\n\nInspired by [dstroot/skeleton](https://github.com/dstroot/skeleton) and [sahat/hackathon-starter](https://github.com/sahat/hackathon-starter)\n\n*This is just my personal boilerplate, it may or may not be a good fit for your project(s).*\n\nIf you like my work, please **[donate](https://www.paypal.me/meregnorbert)**. Thank you!\n\n### [Live Demo](http://vemapp.e-paper.space/) (login: test/test1234)\n\n## Features\n**Server-side**\n* [x] **[Node.JS](https://nodejs.org)** v6.x.x\n* [x] **[Express](https://github.com/expressjs/express)**\n* [x] [MongoDB](https://www.mongodb.com/) with [Mongoose](https://github.com/Automattic/mongoose)\n* [x] [NodeMailer](https://github.com/nodemailer/nodemailer) with SMTP, MailGun or SendGrid\n* [x] [Helmet](https://github.com/helmetjs/helmet)\n* [x] [Express-validator](https://github.com/ctavan/express-validator)\n* [x] [winston](https://github.com/winstonjs/winston) + 6 transports\n* [x] **[GraphQL](http://graphql.org/)** with [Apollo stack](http://www.apollostack.com/)\n* [x] [i18next](http://i18next.com/) as the internationalization ecosystem\n* [x] **[HTTP/2 Server Push](https://en.wikipedia.org/wiki/HTTP/2_Server_Push)** with [netjet](https://github.com/cloudflare/netjet)\n* [x] Bundled server-side code with [Webpack 2](https://webpack.github.io/)\n\n**Client-side**\n* [x] **[VueJS 2.x](https://github.com/vuejs/vue)**\n* [x] [Vuex](https://github.com/vuejs/vuex)\n* [x] [Vue-router](https://github.com/vuejs/vue-router)\n* [x] [axios](https://github.com/mzabriskie/axios)\n* [x] **[socket.io](https://github.com/socketio/socket.io) connection with namespaces & authorization**\n* [x] [vue-websocket](https://github.com/icebob/vue-websocket)\n* [x] [Jade](https://github.com/pugjs/pug)\n* [x] **[Webpack 2](https://github.com/webpack/webpack)**\n* [x] [SCSS](http://sass-lang.com/)\n* [x] [PostCSS](https://github.com/postcss/postcss) with precss and autoprefixer\n* [x] [Babel](https://babeljs.io/)\n* [x] [Passwordless](https://www.sitepoint.com/passwordless-authentication-works/) mode\n* [x] [Passport.JS](http://passportjs.org/)\n\t* Social signup/login with Facebook, Google, Twitter and Github\n\t* API key authentication for REST API calls\n* [x] [Toastr](https://github.com/CodeSeven/toastr)\n* [x] [vue-form-generator](https://github.com/icebob/vue-form-generator)\n\n**Supported remote logging services**\n* [x] [Papertrail](https://papertrailapp.com/)\n* [x] [Graylog](https://www.graylog.org/)\n* [x] [LogEntries](https://logentries.com/)\n* [x] [Loggly](https://www.loggly.com/)\n* [x] [Logsene](https://sematext.com/logsene/)\n* [x] [Logz.io](http://logz.io/)\n\n## Usage\nInstall dependencies\n```\n$ npm install\n```\nor\n```\nyarn\n```\n\nFor development\n```bash\n$ npm run dev\n```\n\nBuild web app scripts and styles:\n```bash\n$ npm run build\n```\n\nFor production\n```bash\n$ npm start\n```\n\n## Screenshots\n\n### Login screen\n![Login screen](https://cloud.githubusercontent.com/assets/306521/20032026/e2241716-a381-11e6-8ec2-4e0263308762.png)\n### Index page after login\n![Index page](https://cloud.githubusercontent.com/assets/306521/20032034/e401f10c-a381-11e6-86bb-5325671d32bf.png)\n### Devices page\n![Devices module](https://cloud.githubusercontent.com/assets/306521/20032035/e5e7ec60-a381-11e6-9481-e1db97126797.png)\n\n## Directory structure\n```txt\n+---build\n+---client\n|   +---app\n|   |   +---core\n|   |   +---modules\n|   |       +---demo\n|   |       +---devices\n|   |       +---home\n|   |       +---posts\n|   |       +---session\n|   |                   \n|   +---frontend\n|   +---images\n|   +---scss\n|                   \n+---data\n+---logs\n+---server\n|   |   bundle.js\n|   |   dev.js\n|   |   index.js\n|   +---applogic\n|   |   +---libs\n|   |   +---modules\n|   |       +---counter\n|   |       +---devices\n|   |       +---posts\n|   |       +---session\n|   +---config\n|   |       default.js\n|   |       index.js\n|   |       prod.js\n|   |       test.js\n|   |       \n|   +---core\n|   +---libs\n|   +---locales\n|   |   +---en\n|   |   +---hu\n|   +---models\n|   |       user.js\n|   +---public\n|   +---routes\n|   +---schema\n|   +---services\n|   +---views\n+---tests\n|\n|   package.json\n|   secrets.json\n\n```\n\n## Bundled server-side\nIf you want to bundle your NodeJS server-side code run webpack on server code with `npm run build && npm run build:server` command. It if was success, run the server: `npm run start:bundle`\n\nIf you want to export bundled version copy these folders & files to the new place:\n- server\n\t- locales\n\t- public\n\t- views\n\t- bundle.js\n- package.json\n- config.js (optional)\n\nBefore start, you have to install production dependencies with npm: `npm install --production`\n\n## Obtaining API keys for social signup/login\n\n<img src=\"https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/1000px-Google_2015_logo.svg.png\" width=\"100\">\n- Visit [Google Cloud Console](https://cloud.google.com/console/project)\n- Click on the **Create Project** button\n- Enter *Project Name*, then click on **Create** button\n- Then click on *APIs & auth* in the sidebar and select *API* tab\n- Click on **Google+ API** under *Social APIs*, then click **Enable API**\n- Next, under *APIs & auth* in the sidebar click on *Credentials* tab\n- Click on **Create new Client ID** button\n- Select *Web Application* and click on **Configure Consent Screen**\n- Fill out the required fields then click on **Save**\n- In the *Create Client ID* modal dialog:\n - **Application Type**: Web Application\n - **Authorized Javascript origins**: http://localhost:3000\n - **Authorized redirect URI**: http://localhost:3000/auth/google/callback\n- Click on **Create Client ID** button\n- Copy and paste *Client ID* and *Client secret* keys into `config.js` file\n\n<hr>\n\n<img src=\"http://www.doit.ba/img/facebook.jpg\" width=\"100\">\n- Visit [Facebook Developers](https://developers.facebook.com/)\n- Click **My Apps**, then select **Add a New App* from the dropdown menu\n- Select **Website** platform and enter a new name for your app\n- Click on the **Create New Facebook App ID** button\n- Choose a **Category** that best describes your app\n- Click on **Create App ID** button\n- In the upper right corner click on **Skip Quick Star**\n- Copy and paste *App ID* and *App Secret* keys into `config.js` file\n - **Note:** *App ID* is **clientID**, *App Secret* is **clientSecret**\n- Click on the *Settings* tab in the left nav, then click on **+ Add Platform**\n- Select **Website**\n- Enter `http://localhost:3000` under *Site URL*\n\n**Note:** After a successful sign in with Facebook, a user will be redirected back to home page with appended hash `#_=_` in the URL. It is *not* a bug. See this [Stack Overflow](https://stackoverflow.com/questions/7131909/facebook-callback-appends-to-return-url) discussion for ways to handle it.\n\n<hr>\n\n<img src=\"https://github.global.ssl.fastly.net/images/modules/logos_page/GitHub-Logo.png\" width=\"100\">\n- Go to [Account Settings](https://github.com/settings/profile)\n- Select **Applications** from the sidebar\n- Then inside **Developer applications** click on **Register new application**\n- Enter *Application Name* and *Homepage URL*\n- For *Authorization Callback URL*: http://localhost:3000/auth/github/callback\n- Click **Register application**\n- Now copy and paste *Client ID* and *Client Secret* keys into `config.js` file\n\n<hr>\n\n<img src=\"https://g.twimg.com/ios_homescreen_icon.png\" width=\"45\">\n- Sign in at [https://apps.twitter.com/](https://apps.twitter.com/)\n- Click **Create a new application**\n- Enter your application name, website and description\n- For **Callback URL**: http://127.0.0.1:3000/auth/twitter/callback\n- Go to **Settings** tab\n- Under *Application Type* select **Read and Write** access\n- Check the box **Allow this application to be used to Sign in with Twitter**\n- Click **Update this Twitter's applications settings**\n- Copy and paste *Consumer Key* and *Consumer Secret* keys into `config.js` file\n\n## License\nvue-express-mongo-boilerplate is available under the [MIT license](https://tldrlegal.com/license/mit-license).\n\n## Contact\n\nCopyright (C) 2016 Icebob\n\n[![@icebob](https://img.shields.io/badge/github-icebob-green.svg)](https://github.com/icebob) [![@icebob](https://img.shields.io/badge/twitter-Icebobcsi-blue.svg)](https://twitter.com/Icebobcsi)\n","maintainers":[{"name":"mresende","email":"mpresendex@gmail.com"}],"time":{"modified":"2022-06-28T19:27:28.975Z","created":"2017-01-30T13:21:05.477Z","0.9.0":"2017-01-30T13:21:05.477Z"},"homepage":"https://github.com/icebob/vue-express-mongo-boilerplate#readme","keywords":["boilerplate","express","mongo","vue","mongodb","hackaton","bootstrap","starter"],"repository":{"type":"git","url":"git+ssh://git@github.com/icebob/vue-express-mongo-boilerplate.git"},"author":{"name":"Icebob"},"bugs":{"url":"https://github.com/icebob/vue-express-mongo-boilerplate/issues"},"license":"MIT","readmeFilename":"README.md"}