Giter Club home page Giter Club logo

typescript-express-starter's Introduction


Project Logo

TypeScript Express Starter

๐Ÿš€ Express RESTful API Boilerplate Using TypeScript

npm Info

npm Version npm Release Version npm Downloads npm Package License

github Stars github Forks github Contributors github Issues



๐Ÿ˜Ž Introducing The Project

Express consists of JavaScript, which makes it vulnerable to type definitions.

That's why we avoid supersets with starter packages that introduce TypeScript.

The package is configured to use TypeScript instead of JavaScript.

The project referred to express-generator-typescript

๐Ÿค” What is Express ?

Express is a fast, open and concise web framework and is a Node.js based project.

๐Ÿš€ Quick Start

Install with the npm Global Package

$ npm install -g typescript-express-starter

Run npx to Install The Package

npx is a tool in the JavaScript package management module, npm.

This is a tool that allows you to run the npm package on a single run without installing the package.

If you do not enter a project name, it defaults to typescript-express-starter.

$ npx typescript-express-starter "project name"

Select a Templates

Example Cli

Start your typescript-express-starter app in development mode at http://localhost:3000/

Template Type

Name Description
Default Express Default
Routing Controllers Create structured, declarative and beautifully organized class-based controllers with heavy decorators usage
Sequelize Easy to use multi SQL dialect ORM for Node.js
Mongoose MongoDB Object Modeling(ODM) designed to work in an asynchronous environment
TypeORM An ORM that can run in Node.js and Others
Prisma Modern Database Access for TypeScript & Node.js
Knex SQL query builder for Postgres, MySQL, MariaDB, SQLite3 and Oracle
GraphQL query language for APIs and a runtime for fulfilling those queries with your existing data
Typegoose Define Mongoose models using TypeScript classes
Mikro ORM TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, PostgreSQL and SQLite databases
Node Postgres node-postgres is a collection of node.js modules for interfacing with your PostgreSQL database

Template to be developed

Name Description
Sequelize Typescript Decorators and some other features for sequelize
TS SQL A SQL database implemented purely in TypeScript type annotations
inversify-express-utils Some utilities for the development of Express application with InversifyJS
postgress typescript
graphql prisma

๐Ÿ›Ž Available Commands for the Server

  • Run the Server in production mode : npm run start or Start typescript-express-starter in VS Code
  • Run the Server in development mode : npm run dev or Dev typescript-express-starter in VS Code
  • Run all unit-tests : npm test or Test typescript-express-starter in VS Code
  • Check for linting errors : npm run lint or Lint typescript-express-starter in VS Code
  • Fix for linting : npm run lint:fix or Lint:Fix typescript-express-starter in VS Code

๐Ÿ’Ž The Package Features

ย ย  ย ย  ย ย 

ย ย  ย ย  ย ย  ย ย  ย ย  ย ย 

ย ย  ย ย  ย ย 

๐Ÿณ Docker :: Container Platform

Docker is a platform for developers and sysadmins to build, run, and share applications with containers.

Docker Install.

  • starts the containers in the background and leaves them running : docker-compose up -d
  • Stops containers and removes containers, networks, volumes, and images : docker-compose down

Modify docker-compose.yml and Dockerfile file to your source code.

โ™ป๏ธ NGINX :: Web Server

NGINX is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.

Proxying is typically used to distribute the load among several servers, seamlessly show content from different websites, or pass requests for processing to application servers over protocols other than HTTP.

When NGINX proxies a request, it sends the request to a specified proxied server, fetches the response, and sends it back to the client.

Modify nginx.conf file to your source code.

โœจ ESLint, Prettier :: Code Formatter

Prettier is an opinionated code formatter.

ESLint, Find and fix problems in your JavaScript code

It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.

  1. Install VSCode Extension Prettier, ESLint

  2. CMD + Shift + P (Mac Os) or Ctrl + Shift + P (Windows)

  3. Format Selection With

  4. Configure Default Formatter...

  5. Prettier - Code formatter

Formatter Setting

Palantir, the backers behind TSLint announced in 2019 that they would be deprecating TSLint in favor of supporting typescript-eslint in order to benefit the community. So, migration from TSLint to ESLint.

๐Ÿ“— Swagger :: API Document

Swagger is Simplify API development for users, teams, and enterprises with the Swagger open source and professional toolset.

Easily used by Swagger to design and document APIs at scale.

Start your app in development mode at http://localhost:3000/api-docs

Modify swagger.yaml file to your source code.

๐ŸŒ REST Client :: HTTP Client Tools

REST Client allows you to send HTTP request and view the response in Visual Studio Code directly.

VSCode Extension REST Client Install.

Modify *.http file in src/http folder to your source code.

๐Ÿ”ฎ PM2 :: Advanced, Production process manager for Node.js

PM2 is a daemon process manager that will help you manage and keep your application online 24/7.

  • production mode :: npm run deploy:prod or pm2 start ecosystem.config.js --only prod
  • development mode :: npm run deploy:dev or pm2 start ecosystem.config.js --only dev

Modify ecosystem.config.js file to your source code.

๐ŸŽ SWC :: a super-fast JavaScript / TypeScript compiler

SWC is an extensible Rust-based platform for the next generation of fast developer tools.

SWC is 20x faster than Babel on a single thread and 70x faster on four cores.

  • tsc build :: npm run build
  • swc build :: npm run build:swc

Modify .swcrc file to your source code.

๐Ÿ’„ Makefile :: This is a setting file of the make program used to make the compilation that occurs repeatedly on Linux

Makefiles are used to help decide which parts of a large program need to be recompiled.

  • help :: make help

Modify Makefile file to your source code.

๐Ÿ—‚ Code Structure (default)

โ”‚
โ”œโ”€โ”€๐Ÿ“‚ .vscode
โ”‚  โ”œโ”€โ”€ launch.json
โ”‚  โ””โ”€โ”€ settings.json
โ”‚
โ”œโ”€โ”€๐Ÿ“‚ src
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ config
โ”‚  โ”‚  โ””โ”€โ”€ index.ts
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ controllers
โ”‚  โ”‚  โ”œโ”€โ”€ auth.controller.ts
โ”‚  โ”‚  โ””โ”€โ”€ users.controller.ts
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ dtos
โ”‚  โ”‚  โ””โ”€โ”€ users.dto.ts
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ exceptions
โ”‚  โ”‚  โ””โ”€โ”€ httpException.ts
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ http
โ”‚  โ”‚  โ”œโ”€โ”€ auth.http
โ”‚  โ”‚  โ””โ”€โ”€ users.http
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ interfaces
โ”‚  โ”‚  โ”œโ”€โ”€ auth.interface.ts
โ”‚  โ”‚  โ”œโ”€โ”€ routes.interface.ts
โ”‚  โ”‚  โ””โ”€โ”€ users.interface.ts
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ middlewares
โ”‚  โ”‚  โ”œโ”€โ”€ auth.middleware.ts
โ”‚  โ”‚  โ”œโ”€โ”€ error.middleware.ts
โ”‚  โ”‚  โ””โ”€โ”€ validation.middleware.ts
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ models
โ”‚  โ”‚  โ””โ”€โ”€ users.model.ts
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ routes
โ”‚  โ”‚  โ”œโ”€โ”€ auth.route.ts
โ”‚  โ”‚  โ””โ”€โ”€ users.route.ts
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ services
โ”‚  โ”‚  โ”œโ”€โ”€ auth.service.ts
โ”‚  โ”‚  โ””โ”€โ”€ users.service.ts
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ test
โ”‚  โ”‚  โ”œโ”€โ”€ auth.test.ts
โ”‚  โ”‚  โ””โ”€โ”€ users.test.ts
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€๐Ÿ“‚ utils
โ”‚  โ”‚  โ”œโ”€โ”€ logger.ts
โ”‚  โ”‚  โ””โ”€โ”€ vaildateEnv.ts
โ”‚  โ”‚
โ”‚  โ”œโ”€โ”€ app.ts
โ”‚  โ””โ”€โ”€ server.ts
โ”‚
โ”œโ”€โ”€ .dockerignore
โ”œโ”€โ”€ .editorconfig
โ”œโ”€โ”€ .env.development.local
โ”œโ”€โ”€ .env.production.local
โ”œโ”€โ”€ .env.test.local
โ”œโ”€โ”€ .eslintignore
โ”œโ”€โ”€ .eslintrc
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ .huskyrc
โ”œโ”€โ”€ .lintstagedrc.json
โ”œโ”€โ”€ .prettierrc
โ”œโ”€โ”€ .swcrc
โ”œโ”€โ”€ docker-compose.yml
โ”œโ”€โ”€ Dockerfile.dev
โ”œโ”€โ”€ Dockerfile.prod
โ”œโ”€โ”€ ecosystem.config.js
โ”œโ”€โ”€ jest.config.js
โ”œโ”€โ”€ Makefile
โ”œโ”€โ”€ nginx.conf
โ”œโ”€โ”€ nodemon.json
โ”œโ”€โ”€ package-lock.json
โ”œโ”€โ”€ package.json
โ”œโ”€โ”€ swagger.yaml
โ””โ”€โ”€ tsconfig.json

โญ๏ธ Stargazers

Stargazers repo roster for @ljlm0402/typescript-express-starter

๐Ÿด Forkers

Forkers repo roster for @ljlm0402/typescript-express-starter

๐Ÿค Contributors

Contributors repo roster for @ljlm0402/typescript-express-starter

๐Ÿ’ณ License

MIT

๐Ÿ“‘ Recommended Commit Message

When Commit Message
Add Feature โœจ Add Feature
Fix Bug ๐Ÿž Fix Bug
Refactoring Code ๐Ÿ›  Refactoring Code
Install Package ๐Ÿ“ฆ Install Package
Fix Readme ๐Ÿ“š Fix Readme
Update Version ๐ŸŒผ Update Version
New Template ๐ŸŽ‰ New Template

๐Ÿ“ฌ Please request an issue

Please leave a question or question as an issue.

I will do my best to answer and reflect.

Thank you for your interest.

เดฆเตเดฆเดฟหŠแ—œห‹)

typescript-express-starter's People

Contributors

ljlm0402 avatar tamzidkarim avatar swtpumpkin avatar malavancs avatar jagthefriend avatar joaopms avatar bityoungjae avatar florianmifsud avatar hichemfantar avatar jongio avatar joshuaoloduca avatar pablosproject avatar alanmynah avatar ajvarparadise avatar amriksd avatar benjaminudoh10 avatar sonbyungjun avatar davidjmstewart avatar dustinnewbold avatar edguy3 avatar noelzappy avatar engjellavdiu avatar jonathanfelicity avatar kubarozkwitalski avatar markuslaubscher avatar seanpmaxwell avatar whatifwedigdeeper avatar yeondam88 avatar n2ptune avatar oricc avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.