Skip to content

Latest commit

 

History

History
106 lines (84 loc) · 3.06 KB

File metadata and controls

106 lines (84 loc) · 3.06 KB

vuetify-loopback-mongodb

Code style

This project uses JavaScript Standard Style, enforced (so far only in the front end) by ESLint.

Use of ES6+ features in this project is encouraged.

Tech/framework used

Prequisites

  • MongoDB
  • NodeJS
  • PM2 (for production deployment)

Installation

Clone the repository

git clone https://github.com/alexanderpepper/vuetify-loopback-mongodb.git;

Install NPM packages

cd vuetify-loopback-mongodb
npm install
cd client
npm install

Configuration

Configure Application

  • Create /server/constants/credentials.js with the following content:
const isProd = process.env.NODE_ENV === 'production'
module.exports = {
  clientSecret: '<your_client_secret>',
  clientId: '<your_client_id>',
  redirectUri: isProd ? 'https://yoursite.com/callback' : 'http://localhost:8080/callback'
}

Development

Running the server and client as separate processes gives the best development experience with hot reloading in the client app.

The client app is

  • Configured in client/.env.development to use http://localhost:3000/api as the base API path when running in development
  • Configured in client//.env.production to use /api as the base API path when built for production

Running the Server in Development

To run the Loopback server in devepment mode on https://localhost:3000:

node .

Loopback uses swagger to document the server's REST API. This can be viewed at http://localhost:3000/explorer

Running the Client in Development

To run the Vue client in development mode on http://localhost:8080

cd client
npm run dev

Preparing for Deployment

Acquire a standalone certificate from LetsEncrypt and create server/ssl-config.js with the following content:

const path = require('path')
const fs = require('fs')
const isProd = process.env.NODE_ENV === 'production'

exports.privateKey = isProd ? fs.readFileSync(path.join('/path/to/privkey.pem')).toString() : ''
exports.certificate = isProd ? fs.readFileSync(path.join('/path/to/cert.pem')).toString() : ''
exports.chain = isProd ? fs.readFileSync(path.join('/path/to/chain.pem')).toString() : ''
exports.fullchain = isProd ? fs.readFileSync(path.join('/path/to/fullchain.pem')).toString() : ''

Deploying for Production

When the server starts, /server/boot/client.js builds the client app by running npm run build in the client folder.

To start the server

node_modules/pm2/bin/pm2 start pm2.json --env production

To stop the server

node_modules/pm2/bin/pm2 kill

To monitor the server

node_modules/pm2/bin/pm2 monit

License

MIT © 2018 Alex Pepper