Node Js Server Setup

 ///////////Create server.js file /////////////

const express                        = require("express");

const bodyParser                     = require("body-parser");

const cors                           = require("cors");

const expressValidator               = require('express-validator');

const app                            = express();

const db                             = require("./app/models");

const seeder                         = require("./app/seeders");

const alterTable                     = require("./app/models/alterTables");

const { port,databaseMigration }     = require('./app/config/env.config');

var path                             = require('path');

var corsOptions = {

  origin: "*"

};

app.engine('html', require('ejs').renderFile);

app.set('view engine', 'html');

app.use(cors(corsOptions));

//*For Db Migration */

if(databaseMigration=="Yes"){

  db.sequelize.sync({ force: true }).then(() => {

    console.log("Drop and re-sync db.");

    alterTable.userTable();

    seeder.FormsSeeder()

  });

}

// parse requests of content-type - application/json

app.use(express.json());

app.use(bodyParser.json({ limit: '50mb' }));

// parse requests of content-type - application/x-www-form-urlencoded

app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));

// simple route

app.get("/", (req, res) => {

  res.json({ message: "Welcome to Easyform" });

});

app.use("/public", express.static(path.join(__dirname, 'public')));

require('./app/routes/index.routes')(app);

// set port, listen for requests

const PORT = port || 4000;

app.listen(PORT, () => {

  console.log(`Server is running on port ${PORT}.`);

});


//////////create node js env file //////////////

#============Node Environment============

NODE_ENV=development

#============JWT Details ============

JWT_EXPIRE_TIME = 86400 # 86400=24 hours

JWT_SECRET_KEY = hobucksKey

#============Server port============

PORT=4000

#============Database Details============

DATABASE_ENV = local

DATABASE_MIGRATION = NO

LOCAL_DATABASE_HOST=localhost

LOCAL_DATABASE_USER=root

LOCAL_DATABASE_PASS=

LOCAL_DATABASE_NAME=easyforms

DATABASE_HOST=

DATABASE_USER=

DATABASE_PASS=

DATABASE_NAME=

#============Mail Details============

MAIL_HOST = smtp.mailtrap.io

MAIL_PORT = 

MAIL_USER = 

MAIL_PASS = 

FROM_MAIL = 

FROM_NAME = 

#============Mail Details============

BASE_URL = http://localhost:4000/



///////Create config Folder then create auth.configuration.js file/////////


 const envConfig = require("./env.config");

module.exports = {

    secret: envConfig.JwtSecretKey

};


////// Create db.config. js file//////////

const envConfig = require("./env.config");

module.exports = {

  HOST: envConfig.databaseHost,

  USER: envConfig.databaseUser,

  PASSWORD: envConfig.databasePass,

  DB: envConfig.databaseName,

  dialect: "postgres",

  pool: {

    max: 5,

    min: 0,

    acquire: 30000,

    idle: 10000

  }

};


//////Create  env.config. js ///////

const dotenv = require('dotenv');

dotenv.config();

module.exports = {

    //============Node Environment============

    nodeEnv: process.env.NODE_ENV,

    //============JWT Details ============

    JwtExpireTime: process.env.JWT_EXPIRE_TIME*30,

    JwtSecretKey: process.env.JWT_SECRET_KEY,

    //============Server port============

    port: process.env.PORT,

    //============Database Details============

    databaseHost: process.env.DATABASE_HOST,

    databaseUser: process.env.DATABASE_USER,

    databasePass: process.env.DATABASE_PASS,

    databaseName: process.env.DATABASE_NAME,

    //============Mail Details============

    // mailHost: process.env.MAIL_HOST,

    // mailPort: process.env.MAIL_PORT,

    // mailUser: process.env.MAIL_USER,

    // mailPass: process.env.MAIL_PASS,

    // fromMail: process.env.FROM_MAIL,

    // fromName: process.env.FROM_NAME,

};


///////Create  Model folder then create model file //////

module.exports = (sequelize, Sequelize) => {

    const AllowanceType = sequelize.define("allowance_types", {

        allowanceTypeId: {

        type: Sequelize.INTEGER(20),

        autoIncrement: true,

        primaryKey: true

      },

      userId: {

        type: Sequelize.INTEGER(20),

      },

      allowanceName: {

        type: Sequelize.STRING

      },

      allowanceImage: {

        type: Sequelize.STRING

      },

    });

    return AllowanceType;

  };

Comments