3

GitHub - aoyan107/node-express-mysql-boilerplate: A boilerplate for any enterpri...

 1 year ago
source link: https://github.com/aoyan107/node-express-mysql-boilerplate
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Boilerplate for Node-Express with sequelize ORM

A boilerplate for any enterprise rest api or service with Node.js, Express and Sequelize ORM for mysql, postgresql or others.

By running this project you will get a production ready environment with all necessary supports for validation, unit testing, socket, redis and many more.

Manual Installation

Clone the repo:

git clone https://github.com/aoyan107/node-express-mysql-boilerplate
cd node-express-mysql-boilerplate

Install the dependencies:

yarn install

Set the environment variables:

cp .env.example .env

# open .env and modify the environment variables (if needed)

Features

  • ORM: Sequelize orm for object data modeling
  • Migration and Seed: DB migration and Seed using Sequelize-CLI
  • Authentication and authorization: using passport
  • Error handling: centralized error handling
  • Validation: request data validation using Joi
  • Logging: using winston
  • Testing: unittests using Mocha
  • Caching: Caching using Redis
  • Bidirectional Communication: using Scoket
  • Job scheduler: with Node-cron
  • Dependency management: with Yarn
  • Environment variables: using dotenv and cross-env
  • CORS: Cross-Origin Resource-Sharing enabled using cors
  • Docker support
  • Linting: with ESLint and Prettier

Commands

Running locally:

yarn dev

Running in production:

yarn start

Testing:

# run all tests
yarn test

Environment Variables

The environment variables can be found and modified in the .env file. They come with these default values:

#Server environment
NODE_ENV=development
#Port number
PORT=5000

#Db configuration
DB_HOST=db-host
DB_USER=db-user
DB_PASS=db-pass
DB_NAME=db-name


# JWT secret key
JWT_SECRET=your-jwt-secret-key
# Number of minutes after which an access token expires
JWT_ACCESS_EXPIRATION_MINUTES=5
# Number of days after which a refresh token expires
JWT_REFRESH_EXPIRATION_DAYS=30

#Log config
LOG_FOLDER=logs/
LOG_FILE=%DATE%-app-log.log
LOG_LEVEL=error

#Redis
REDIS_HOST=redis-host
REDIS_PORT=6379
REDIS_USE_PASSWORD=no
REDIS_PASSWORD=your-password

Project Structure

specs\
src\
 |--config\         # Environment variables and configuration related things
 |--controllers\    # Route controllers (controller layer)
 |--dao\            # Data Access Object for models
 |--db\             # Migrations and Seed files
 |--models\         # Sequelize models (data layer)
 |--routes\         # Routes
 |--services\       # Business logic (service layer)
 |--helper\         # Helper classes and functions
 |--validations\    # Request data validation schemas
 |--app.js          # Express app
 |--cronJobs.js     # Job Scheduler
 |--index.js        # App entry point

License

MIT


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK