koach-javascriptProduction ready Koa2 boilerplate.

联合创作 · 2023-09-21 13:46


KOACH


Production ready boilerplate for building APIs with koa2 using mongodb as the database and http/2 as the communication protocol.


Description


This project covers basic necessities of most APIs.



  • Authentication (passport & jwt)

  • Database (mongoose)

  • Testing (mocha)

  • http/2 support for websites and apis

  • Doc generation with apidoc

  • linting using standard

  • Contains two versions of API


Please note, if you are planning to use this boilerplate for creating a web application then the 'https' protocol should be used to access its pages.


Visit https://localhost:3000/ to access the root page.


Requirements



  • node = v10.15.3

  • MongoDB


.env Configuration


To simulate environment variables in Dev environment, please create .env file at the root location and define the following properties -



NODE_ENV=production                                 // Node environment development/production
PORT=8000 // Server Port
SESSION=0.0.0.0 // secret-boilerplate-token
JWT_SECRET=This_Should_be_32_characters_long // Jwt secret
DATABASE_URL=mongodb://localhost:27017/koach-dev // Mongo database url
#DATABASE_URL=mongodb://mongodb:27017/koach-dev // Mongo database url while using docker
DB_PATH=/home/ulap28/work/systango-frameworks // path where database volumen mounted.

## Installation
```bash
git clone https://github.com/SystangoTechnologies/Koach.git


Features



Structure



├── bin
│ └── server.js # Bootstrapping and entry point
├── cert
│ ├── server.cert # SSL certificate
│ └── server.key # SSL certificate key
├── config # Server configuration settings
│ ├── env # Environment specific config
│ │ ├── common.js
│ │ ├── development.js
│ │ ├── production.js
│ │ └── test.js
│ ├── index.js # Config entrypoint
│ └── passport.js # Passportjs config of strategies
├── src # Source code
│ ├── modules # Module-specific controllers
│ │ ├── common # Contains common modules
│ │ │ ├─── home
│ │ │ └─ index.js
│ │ ├── v1 # Version 1 of APIs
│ │ │ ├─ Auth
│ │ │ ├─ User
│ │ │ └─ index.js
│ │ └─── v2 # Version 2 of APIs
│ │ ├─ Auth
│ │ ├─ User
│ │ └─ index.js
│ ├── models # Mongoose models
| ├── requestModel
| | ├── v1
| | | ├── auth.js
| | | └── users.js
| | └── v2
| | ├── auth.js
| | └── users.js
| ├── responseModel
| | ├── v1
| | | ├── auth.js
| | | └── users.js
| | └── v2
| | ├── auth.js
| | └── users.js
│ └── middleware # Custom middleware
│ └── validators # Validation middleware
└── test # Unit tests
└── pm2.config.js # PM2 configuration file
└── Dockerfile # Docker file
└── docker-compose.yml # Docker Compose file


Usage



  • npm start Start server on development mode with Nodemon

  • npm run prod Start server on production mode with PM2

  • npm run docs Generate API documentation

  • npm test Run mocha tests


Running the server in Docker Container


Prerequisite For Docker Configuration : Docker and docker compose must be installed on the system.


Steps to run app in docker container :



  1. CD to project dir

  2. Create build using cmd: $ docker-compose build

  3. Start the server in daemon thread using cmd: $ docker-compose up -d

  4. Stop the server using cmd : $ docker-compose down


Documentation


API documentation is written inline and generated by apidoc.


Visit https://localhost:3000/docs/ to view docs


To view swagger API documentation


Visit https://localhost:3000/swagger to view Swagger UI.


Performance Comparison


The environment for the test cases are following-



  • Node Version: 8.9.4

  • Number of Users: 1500

  • Ramp-up Period: 300 seconds

  • Loop Count: 100



Contributors


Arpit Khandelwal Anurag Vikram Singh Vikas Patidar Sparsh Pipley


License


MIT.

浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报