Sign inSign up

heatmob/v2a-api

By heatmob

Updated over 2 years ago

Vision 2 art api service

Image
0

10K+

heatmob/v2a-api repository overview

Known Vulnerabilities Publish latest image

Express TypeScript Boilerplate with ChatGPT reviews

This repo can be used as a starting point for backend development with Nodejs. It comes bundled with Docker and is CI/CD optimized. The development environment uses docker-compose to start dependent services like mongo. There is an action to review all PRs with ChatGPT.

A few things to note in the project:

I. Installation

Using curl
$ bash <(curl -s https://raw.githubusercontent.com/sidhantpanda/public/master/scripts/generate-express-ts-app.sh)
Manual Method
1. Clone this repo
$ git clone [email protected]:sidhantpanda/docker-express-typescript-boilerplate.git your-app-name
$ cd your-app-name
2. Install dependencies
$ yarn install

II. Configuration

Update Docker repository for actions
$ yarn setup-actions

III. Development

Start dev server

Starting the dev server also starts MongoDB as a service in a docker container using the compose script at docker-compose.dev.yml.

$ yarn dev

Running the above commands results in

  • 🌏API Server running at http://localhost:3333
  • ⚙️Swagger UI at http://localhost:3333/dev/api-docs
  • 🛢️MongoDB running at mongodb://localhost:27017

IV. Packaging and Deployment

The mongo container is only only available in dev environment. When you build and deploy the docker image, be sure to provide the correct environment variables.

1. Build and run without Docker
$ yarn build && yarn start
2. Run with docker
$ docker build -t api-server .
$ docker run -t -i \
      --env NODE_ENV=production \
      --env MONGO_URL=mongodb://host.docker.internal:27017/colab \
      -p 3333:3333 \
      api-server
3. Run with docker-compose
$ docker-compose up

Environment

To edit environment variables, create a file with name .env and copy the contents from .env.default to start with.

Var NameTypeDefaultDescription
NODE_ENVstringdevelopmentAPI runtime environment. eg: staging
PORTnumber3333Port to run the API server on
MONGO_URLstringmongodb://localhost:27017/colabURL for MongoDB

Logging

The application uses winston as the default logger. The configuration file is at src/logger.ts.

  • All logs are saved in ./logs directory and at /logs in the docker container.
  • The docker-compose file has a volume attached to container to expose host directory to the container for writing logs.
  • Console messages are prettified
  • Each line in error log file is a stringified JSON.
Directory Structure
+-- scripts
|   +-- dev.sh
|   +-- setup-github-actions.sh
+-- src
|   +-- controllers
|   |   +-- book
|   |   |   +-- add.ts
|   |   |   +-- all.ts
|   |   |   +-- get.ts
|   |   |   +-- index.ts
|   |   |   +-- remove.ts
|   |   |   +-- search.ts
|   +-- errors
|   |   +-- application-error.ts
|   |   +-- bad-request.ts
|   +-- lib
|   |   +-- safe-mongo-connection.ts
|   |   +-- winston-console-transport.ts
|   +-- middleware
|   |   +-- request-middleware.ts
|   +-- models
|   |   +-- Book.ts
|   +-- public
|   |   +-- index.html
|   +-- app.ts
|   +-- logger.ts
|   +-- routes.ts
|   +-- server.ts
+-- .env.default
+-- .eslintrc.json
+-- .gitignore
+-- .gitpod.yml
+-- docker-compose.dev.yml
+-- docker-compose.yml
+-- Dockerfile
+-- jest.config.js
+-- LICENSE
+-- nodemon.json
+-- openapi.yml
+-- package.json
+-- README.md
+-- renovate.json
+-- tsconfig.json
+-- yarn.lock

Tag summary

Content type

Image

Digest

sha256:627e5e6ea

Size

222.2 MB

Last updated

over 2 years ago

docker pull heatmob/v2a-api