Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

SystangoTechnologies/koach-typescript

Repository files navigation

KOACH

KOACH-Typescript

Production ready boilerplate for building APIs in Typescript(3.4) with koa2, and using SQL database and http/2 as the communication protocol.

Features

  • Object oriented
  • Typescript
  • Authentication (JWT)
  • http/2 support
  • Sequelize ORM
  • Doc generation with Swagger
  • TS linting
  • Dockerized Version

Please note, This boilerplate is for the API only application.

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

Requirements

  • Node v10.16.0
  • SQL Database (anyone MySQL, MariaDB, SQLite, PostgreSQL, MSSQL)
  • Docker

Environment Variables Configuration

To simulate environment variables

Dev environment (use anyone)

  • src/resources/config/env.development.ts
  • .env file

Production environment

  • /etc/environment file

The environment variables are as follows -

NODE_ENV=production // Environment development/production
SERVER_PORT=3000 // Server's Port
SESSION=secret_key // secret-boilerplate-token
JWT_SECRET=token // Jwt secret key
DB_HOST=host // DB Host address
DB_PORT=3306 // DB Port number
DB_DIALECT=db // DB (mysql, PostgreSQL, MySQL, etc)
DB_NAME=name // DB name
DB_USER=user // DB user name
DB_PASSWORD=password // DB password

Installation

git clone https://github.com/SystangoTechnologies/Koach-Typescript.git
 

Modules Used

Structure

│ .gitignore // Standard git ignore file
| .env // dotenv configuration file for environment variable
│ docker-compose.yml // Standard docker compose file
│ Dockerfile // Standard docker file
│ gruntfile.js // Standard gruntfile.js file
│ package.json // Standard package.json file
│ README.md
│ tslint.json // Standard tslint.json file
│
├───log // logs directory
└───src // source code
 │ .sequelizerc // Standarded sequlize config file
 │
 ├───app
 │ ├───constant // constants
 │ │ httpConstants.ts // http status code constant file
 │ │
 │ ├───controller // controller
 │ │ BookController.ts
 │ │
 │ ├───core
 │ │ │ RouterGenerator.ts // Generating all routes
 │ │ │ RouterManager.ts // Route depedency
 │ │ │
 │ │ └───middleware // middlewares
 │ │ ErrorMiddleware.ts 
 │ │ RequestValidator.ts // request body validator
 │ │
 │ ├───db
 │ │ │ config.json
 │ │ │ DatabaseConfigurationManager.ts
 │ │ │
 │ │ ├───entity // entities
 │ │ | ├───library
 │ │ | │ book.ts // book entity
 │ │ | │ index.ts
 │ │ | │
 │ │ | └───migrations // Migrations
 │ │ | │ 20190703135002-create-book.ts
 │ │ | │
 │ │ | └───compiled // compiled migrations
 │ │ | 20190703135002-create-book.js 
 │ │ |
 │ │ |
 │ │ └───repository // repository
 │ │ Book.ts 
 │ │ 
 │ ├───model
 │ │ Book.ts // book model
 │ │ 
 │ ├───routes // router
 │ │ BookRouter.ts
 │ │ index.ts
 │ │
 │ ├───service // Service file for database
 │ │ BookService.ts
 │ │
 │ └───validation // validations
 │ BookValidator.ts
 │
 ├───logger // logger file.
 │ index.ts
 │ LogManager.ts
 │
 ├───resources // resources
 │ ├───config // configuration setting
 │ │ ConfigurationManager.ts
 │ │ env.common.ts
 │ │ env.development.ts
 │ │ index.ts
 │ │
 │	├───cert // SSL certificates
 │	│ localhost.crt
 │	│ localhost.key
 │	│ 
 │ └───swagger // Swagger
 │
 └───server // server
 server.ts

Usage

  • npm run build compile the typescripts in src folder
  • npm start Starts the server on development mode in Typescript
  • npm run dev Starts the server on development mode in Javascript
  • npm run grunt Starts server using grunt file
  • docker-compose up -d Starts the server for production

Running the server in Docker Container

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

Steps to run the app in a 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

The API documentation is written in Swagger (https://github.com/swagger-api/swagger-node#readme).

To view swagger API documentation

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

Contributors

Sparsh Pipley

Anurag Vikram Singh

Abhishek Parmar

Ayush Sharma

License

MIT.

About

Production ready Koa2 boilerplate written in Typescript . Uses http2 and sequelize .

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

AltStyle によって変換されたページ (->オリジナル) /