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.
A few things to note in the project:
http://localhost:3000/dev/api-docs
curl
$ bash <(curl -s https://raw.githubusercontent.com/sidhantpanda/public/master/scripts/generate-express-ts-app.sh)
$ git clone git@github.com:sidhantpanda/docker-express-typescript-boilerplate.git your-app-name
$ cd your-app-name
$ npm i
$ npm run setup-actions
Starting the dev server also starts MongoDB as a service in a docker container using the compose script at docker-compose.dev.yml
.
$ npm run dev
Running the above commands results in
http://localhost:3000
http://localhost:3000/dev/api-docs
mongodb://localhost:27017
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.
$ npm run build && npm run start
$ docker build -t api-server .
$ docker run -t -i \
--env NODE_ENV=production \
--env MONGO_URL=mongodb://host.docker.internal:27017/books \
-p 3000:3000 \
api-server
$ docker-compose up
To edit environment variables, create a file with name .env
and copy the contents from .env.default
to start with.
Var Name | Type | Default | Description |
---|---|---|---|
NODE_ENV | string | development |
API runtime environment. eg: staging |
PORT | number | 3000 |
Port to run the API server on |
MONGO_URL | string | mongodb://localhost:27017/books |
URL for MongoDB |
The application uses winston as the default logger. The configuration file is at src/logger.ts
.
./logs
directory and at /logs
in the docker container.docker-compose
file has a volume attached to container to expose host directory to the container for writing logs.+-- scripts
| +-- dev.sh
| +-- setup-github-actions.sh
+-- src
| +-- controllers
| | +-- book
| | | +-- add.ts
| | | +-- all.ts
| | | +-- index.ts
| | | +-- search.ts
| +-- errors
| | +-- application-error.ts
| | +-- bad-request.ts
| +-- lib
| | +-- console-logger
| | | +-- index.ts
| | | +-- winston-transport.ts
| | +-- safe-mongo-connection.ts
| +-- middleware
| | +-- request-middleware.ts
| +-- models
| | +-- plugins
| | | +-- timestamp-plugin.ts
| | +-- Book.ts
| +-- public
| | +-- index.html
| +-- app.ts
| +-- mongo-connection.ts
| +-- routes.ts
| +-- server.ts
+-- .env.default
+-- .eslintrc.json
+-- .gitignore
+-- docker-compose.dev.yml
+-- docker-compose.yml
+-- Dockerfile
+-- jest.config.js
+-- LICENSE
+-- nodemon.json
+-- openapi.json
+-- package-lock.json
+-- package.json
+-- README.md
+-- tsconfig.json
Hey There! �� �� that ⭐️ button if you like this boilerplate. A boilerplate for Node.js App. This boilerplate is built using Express.js web framework, and is using Typescript Lang for writing the app'
express-graphql-typescript-boilerplate A GraphQL starter kit for building amazing API's in TypeScript and with Express.js framework. This seed repository has a complete GraphQL starter kit written in
express-react-typescript A boilerplate to build web application using Express and React with help of Typescript. It's configured to separate client-side JavaScript and CSS bundles and your files as as
Introduction Easily bootstrap your Typescript project with NodeJS + Express + Sequelize ORM. ❤️ Installation Run one of the command below npm install npm install -g yarnyarn The build tasks use Gulp t
Node.js Express API with TypeScript 3 Node.js Express API with TypeScript 3. Supports MongoDB Description This skeleton will help you to build your own Node.js Express Mongodb API using TypeScript 3.
RESTful API Server Boilerplate Featuring Docker, Node, Express, MongoDB, Mongoose, & NGINX License & Purpose MIT License. This is something I've used in production before with success that I found use