firmanJS / express-template

template for develop api using expressjs, sequelize orm and database postgresql or etc redis and sentry supporting

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Express Template Boillerplate RestfullApi

Maintainability Test Coverage Node.js CI made-with-nodejs made-with-expressjs Ask Me Anything ! GitHub license GitHub release Github all releases GitHub issues GitHub pull-requests PRs Welcome

How To use

you must click the button use this template

  • using template - create name of your repository
  • rename link readme - change link repo default github/firmanJS/express-template to your repo
  • codeclimate - you must integrate repo to codeclimate don't forget set your repo is public for integrated and in github repo settings create secret key with name CC_TEST_REPORTER_ID and value from code climate REPORTER ID in https://codeclimate.com/

or clone this repository via https :

https://github.com/firmanJS/express-template.git

default branch using commonjs if you want version ecmascript you must checkout to branch version/ecmascript

Core Stack

Feature

  1. error handling
  2. database structure folder
  3. testing with jest
  4. coverage use jest
  5. with docker example
  6. validiation, use express-valdator and joi
  7. pagination example
  8. custom message api response
  9. eslint airbnb base

Unit testing

How To run

copy environment variable

cp .env-sample .env

run manualy

  • via yarn or npm :
# install package
npm install or yarn install

#  running app
npm run dev or yarn dev

# running unit tetsing
npm run test or yarn test
  • via make :
# start aplication with docker
make docker-start 

# stop docker container
make docker-stop 

# remove docker container
make docker-down 

fill in the copied environment earlier

PORT=2000
TZ=Asia/Jakarta
MONGO_SERVICE=# uri mongodb
AUTH_SOURCE= #auth service
SECRET_KEY= #jwt secret key here

run with docker-compose

docker-compose up --build

or run with background process

docker-compose up --build -d

execution npm with container docker

# install package
docker-compose exec boillerplate npm install

# running unit testing
docker-compose exec boillerplate npm run test

Documentation API

using swagger check in folder static

Project Structure

.
├── .github/            * all workflows github actions
├── caprover/           * for deployment in caprover
├── coverage/           * all output coverage
├── docker/             * all dockerfile
├── src/                * all source code in here
  └── config/           * all configuration file here
  |  └── db.js         * configuration database
  └── database/         * all models schema file here
  |   └── models        * all models file
  |   └── migrations    * all migrations file
  |   └── seeders       * all seeders file
  └── handlers/         * all file handlers here
  |   └── index.js      * register all handler here
  └── lang/             * setup language
  |   └── index.js      * register all language here
  └── middleware/       * all middleware file here, for check before next to api
  └── repository/       * all file repository for single db or multiple db
  |   └── monggo        * register all monggo
  |   └── mysql         * register all mysql
  |   └── postgresql    * register all postgresql
  └── routes/           * all file route here
  |   └── index.js      * register all route
  └── static/           * config for swagger
  | └── swagger.json    * config swagger
  └── test/             * all test file here
  |   └── index.js      * test apps
  └── utils/            * all utils file here

Code Style Guides

  • Guideline:
    • Use camelCase for variable name, naming function, load module or other functions
    • Use UpperCase for Constant Variable
    • Use PascalCase for class name, models
    • Use snake_case for file name as variable
    • Function name use Verb
    • Variable name use Noun

About

template for develop api using expressjs, sequelize orm and database postgresql or etc redis and sentry supporting

License:MIT License


Languages

Language:JavaScript 97.9%Language:Makefile 1.5%Language:Dockerfile 0.6%