@ -0,0 +1,3 @@ | |||||
node_modules | |||||
combined.log | |||||
error.log |
@ -1,10 +0,0 @@ | |||||
JWT_SECRET=sajdhgjhasdhgads | |||||
EMAIL_HOST=smtp.gmail.com | |||||
EMAIL_PORT=587 | |||||
EMAIL_USERNAME=krish@sentientgeeks.com | |||||
EMAIL_PASSWORD=123456 | |||||
NODE_ENV=development | |||||
PORT=3000 | |||||
MONGO_URI_TESTS=mongodb://mongodb:27017/sg-node-express-rest-api | |||||
MONGO_URI=mongodb://mongodb:27017/sg-node-express-rest-api | |||||
JWT_EXPIRATION_MINUTES=300 |
@ -1,14 +1,11 @@ | |||||
FROM node:8-alpine | |||||
FROM node:latest | |||||
EXPOSE 3000 | |||||
WORKDIR /app | |||||
ARG NODE_ENV | |||||
ENV NODE_ENV $NODE_ENV | |||||
COPY package.json package-lock.json ./ | |||||
RUN npm install | |||||
RUN mkdir /app | |||||
WORKDIR /app | |||||
ADD package.json yarn.lock /app/ | |||||
RUN yarn --pure-lockfile | |||||
ADD . /app | |||||
COPY . . | |||||
CMD ["npm", "start"] | |||||
CMD ["yarn", "docker:start"] |
@ -1,6 +1,29 @@ | |||||
version: '2' | |||||
version: '3' | |||||
services: | services: | ||||
boilerplate-api: | |||||
command: yarn dev -- -L | |||||
node: | |||||
container_name: nodejs-api | |||||
build: | |||||
context: . | |||||
dockerfile: Dockerfile | |||||
ports: | |||||
- "3000:3000" | |||||
environment: | environment: | ||||
- NODE_ENV=development | - NODE_ENV=development | ||||
volumes: | |||||
- .:/app | |||||
depends_on: | |||||
- mongo | |||||
restart: always | |||||
mongo: | |||||
container_name: mongodb | |||||
image: mongo:latest | |||||
ports: | |||||
- "27017:27017" | |||||
volumes: | |||||
- mongo_data:/data/db | |||||
restart: always | |||||
volumes: | |||||
mongo_data: |
@ -1,6 +1,30 @@ | |||||
version: '2' | |||||
version: '3' | |||||
services: | services: | ||||
boilerplate-api: | |||||
command: yarn start | |||||
node: | |||||
container_name: nodejs-api | |||||
build: | |||||
context: . | |||||
dockerfile: Dockerfile | |||||
ports: | |||||
- "3000:3000" | |||||
environment: | environment: | ||||
- NODE_ENV=production | - NODE_ENV=production | ||||
volumes: | |||||
- .:/app | |||||
depends_on: | |||||
- mongo | |||||
restart: always | |||||
mongo: | |||||
container_name: mongodb | |||||
image: mongo:latest | |||||
ports: | |||||
- "27017:27017" | |||||
volumes: | |||||
- mongo_data:/data/db | |||||
restart: always | |||||
volumes: | |||||
mongo_data: |
@ -1,17 +0,0 @@ | |||||
version: '2' | |||||
services: | |||||
boilerplate-api: | |||||
build: . | |||||
environment: | |||||
- MONGO_URI=mongodb://mongodb:27017/sg-node-express-rest-api | |||||
volumes: | |||||
- .:/app | |||||
ports: | |||||
- '3000:3000' | |||||
depends_on: | |||||
- mongodb | |||||
mongodb: | |||||
image: mongo | |||||
ports: | |||||
- '27017:27017' |
@ -1,51 +0,0 @@ | |||||
const Joi = require('joi'); | |||||
module.exports = { | |||||
// POST /v1/auth/register | |||||
register: { | |||||
body: Joi.object({ | |||||
email: Joi.string().email().required(), | |||||
password: Joi.string().required().min(6).max(128), | |||||
}), | |||||
}, | |||||
// POST /v1/auth/login | |||||
login: { | |||||
body: Joi.object({ | |||||
email: Joi.string().email().required(), | |||||
password: Joi.string().required().max(128), | |||||
}), | |||||
}, | |||||
// POST /v1/auth/facebook | |||||
// POST /v1/auth/google | |||||
oAuth: { | |||||
body: Joi.object({ | |||||
access_token: Joi.string().required(), | |||||
}), | |||||
}, | |||||
// POST /v1/auth/refresh | |||||
refresh: { | |||||
body: Joi.object({ | |||||
email: Joi.string().email().required(), | |||||
refreshToken: Joi.string().required(), | |||||
}), | |||||
}, | |||||
// POST /v1/auth/refresh | |||||
sendPasswordReset: { | |||||
body: Joi.object({ | |||||
email: Joi.string().email().required(), | |||||
}), | |||||
}, | |||||
// POST /v1/auth/password-reset | |||||
passwordReset: { | |||||
body: Joi.object({ | |||||
email: Joi.string().email().required(), | |||||
password: Joi.string().required().min(6).max(128), | |||||
resetToken: Joi.string().required(), | |||||
}), | |||||
}, | |||||
}; |
@ -1,6 +1,6 @@ | |||||
const httpStatus = require('http-status'); | const httpStatus = require('http-status'); | ||||
const { omit } = require('lodash'); | const { omit } = require('lodash'); | ||||
const User = require('../models/user.model'); | |||||
const User = require('../api/models/user.model'); | |||||
/** | /** | ||||
* Load user and append to req. | * Load user and append to req. |
@ -1,7 +1,7 @@ | |||||
const httpStatus = require('http-status'); | const httpStatus = require('http-status'); | ||||
const expressValidation = require('express-validation'); | const expressValidation = require('express-validation'); | ||||
const APIError = require('../utils/APIError'); | |||||
const { env } = require('../../config/vars'); | |||||
const APIError = require('../api/utils/APIError'); | |||||
const { env } = require('../config/vars'); | |||||
/** | /** | ||||
* Error handler. Send stacktrace only during development | * Error handler. Send stacktrace only during development |
@ -1,13 +1,13 @@ | |||||
const express = require('express'); | const express = require('express'); | ||||
const { validate, ValidationError, Joi } = require('express-validation'); | const { validate, ValidationError, Joi } = require('express-validation'); | ||||
const controller = require('../../controllers/user.controller'); | |||||
const { authorize, ADMIN, LOGGED_USER } = require('../../middlewares/auth'); | |||||
const controller = require('../../../controllers/user.controller'); | |||||
const { authorize, ADMIN, LOGGED_USER } = require('../../../middlewares/auth'); | |||||
const { | const { | ||||
listUsers, | listUsers, | ||||
createUser, | createUser, | ||||
replaceUser, | replaceUser, | ||||
updateUser, | updateUser, | ||||
} = require('../../validations/user.validation'); | |||||
} = require('../../../validations/user.validation'); | |||||
const router = express.Router(); | const router = express.Router(); | ||||
@ -1,5 +1,5 @@ | |||||
const nodemailer = require('nodemailer'); | const nodemailer = require('nodemailer'); | ||||
const { emailConfig } = require('../../../config/vars'); | |||||
const { emailConfig } = require('../../config/vars'); | |||||
const Email = require('email-templates'); | const Email = require('email-templates'); | ||||
// SMTP is the main transport in Nodemailer for delivering messages. | // SMTP is the main transport in Nodemailer for delivering messages. |
@ -1,5 +1,5 @@ | |||||
const Joi = require('joi'); | const Joi = require('joi'); | ||||
const User = require('../models/user.model'); | |||||
const User = require('../api/models/user.model'); | |||||
module.exports = { | module.exports = { | ||||
// GET /v1/users | // GET /v1/users |