Boilerplate/Generator/Starter Project for building RESTful APIs and microservices using Node.js, Express and MongoDB
- No transpilers, just vanilla javascript
- ES2017 latest features like Async/Await
- CORS enabled
- Uses yarn
- Express + MongoDB (Mongoose)
- Consistent coding styles with editorconfig
- Docker support
- Uses helmet to set some HTTP headers for security
- Load environment variables from .env files with dotenv
- Request validation with joi
- Gzip compression with compression
- Linting with eslint
- Tests with mocha, chai and sinon
- Code coverage with istanbul and coveralls
- Git hooks with husky
- Logging with morgan
- Authentication and Authorization with passport
- API documentation generation with apidoc
- Continuous integration support with travisCI
- Monitoring with pm2
- Node v7.6+ or Docker
- Yarn
git clone --depth 1 https://github.com/danielfsousa/express-rest-es2017-boilerplate
cd express-rest-es2017-boilerplate
rm -rf .gityarncp .env.example .envyarn devyarn start# lint code with ESLint
yarn lint
# try to fix ESLint errors
yarn lint:fix
# lint and watch for changes
yarn lint:watch# run all tests with Mocha
yarn test
# run unit tests
yarn test:unit
# run integration tests
yarn test:integration
# run all tests and watch for changes
yarn test:watch
# open nyc test coverage reports
yarn coverage# run lint and tests
yarn validate# show logs in production
pm2 logs# generate and open api documentation
yarn docs# run container locally
yarn docker:dev
# run container in production
yarn docker:prod
# run tests
yarn docker:testSet your server ip:
DEPLOY_SERVER=127.0.0.1Replace my Docker username with yours:
nano deploy.shRun deploy script:
yarn deployTo simplify documenting your API, we have included Optic. To use it, you will need to install the CLI tool, and then you can use api exec "npm start" to start capturing your endpoints as you create them. Once you want to review and add them to your API specification run: api status -- review.