Skip to content

d4rkstar/ts-express-boilerplate

Repository files navigation

ts-express-boilerplate logo

Typescript Express Boilerplate

CircleCI (all branches)

This boilerplate is a generic "template" for a web application based on following modules:

Type Module
🪣 Web Framework ExpressJS 4
🧬 Orm TypeORM
🧻 Logging Winston
🧰 Utilities
🩹 Testing
🪥 Linting
👨‍🎨 Artwork by faudas

🇮🇹 Made in Italy 🇮🇹

How to start

  1. Clone repository and Install dependencies
$ git clone https://github.com/d4rkstar/ts-express-boilerplate.git my-awesome-project
$ cd my-awesome-project
$ yarn install
  1. Build sources
$ yarn run build
  1. If you need, create a database

  2. Copy .env.example to .env

  3. Edit .env file and put required variables

  4. Migrate database

  5. To run tests

$ yarn run test
  1. To start
$ yarn run start

👉 Info

Before start coding, ensure to:

  • Remove the .git folder
  • Start a new repo, doing a git init . inside the project folder and adding files with git add .
  • Add a remote url to your git: git remote set-url origin <url>
  • Adjust the package.json author and remote git repo. Now you can use the publish.sh script command:
$ ./publish.sh "my-awesome-project" "My Awesome Project API Endpoint test" "Me"

File package.json was updated!
💥 Removing CircleCI original dir
💥 Removing Art original dir
🖋️ Generating new README.md
🔥 Republish Completed!
  • Copy .env.example to .env and adjust variables at your needs

If you need to use database and typeorm:

  • Set USE_TYPEORM to the value of 1 in .env
  • Add a database if you need it and configure datasources (under then datasources folder)

If you don't need to use database and typeorm:

  • Set USE_TYPEORM to the value of 0 in .env

To add new routes and routers, check the App::mountRoutes method.

It's quite simple to add new routes!

Docker

  1. Build image
$ docker build -t ts-express-boilerplate .
  1. Run image :)
$ docker run -d -p 3000:3000 --name ts-express-boilerplate ts-express-boilerplate:latest

Migrations :-)

Create an entity

$ yarn run typeorm entity:create src/entities/User

and modify at your needs. Then generate migration for this Entity:

$ yarn run  typeorm migration:generate -d dist/Datasource.js src/migrations/use

Finally run migrations:

$ yarn run migrate-dev

Info: migrate-dev will build js source before run migrations. If you need to run migrations in prod (!!), you can consider the migrate script. Adjust datasources at your needs.

Coding guidelines

I suggest reading this useful article:

Using ESLint and Prettier in a TypeScript Project

To activate ESlint in Webstorm, follow this link:

ESLint in Webstorm

To use ESlint from command line:

$ eslint --fix --ignore-path .eslintignore src/*.ts

Some useful references:

For testing:

Deploy to openshift