You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Sambo Chea c999b4a8f6
Fixed dockerfile build missing yarn
3 months ago
.husky Updated husky and install for prettier 3 months ago
packages Updated readme 3 months ago
src Add express server from module and updated the server and config 3 months ago
.dockerignore Task: Add Dockerfile and support DroneCI 3 months ago
.drone.yml Forgot yarn command 3 months ago
.env Add server port in env 3 months ago
.eslintrc.js Task: Add express and nodejs application with TypeScript , Prettier and Husky 3 months ago
.gitignore Updated package and gitignore 3 months ago
.gitmodules Add express server from module and updated the server and config 3 months ago
.prettierrc.json Task: Add express and nodejs application with TypeScript , Prettier and Husky 3 months ago
Dockerfile Fixed dockerfile build missing yarn 3 months ago
LICENSE Initial commit 3 months ago
README.md Updated readme 3 months ago
lerna.json Task: Updated lerna.json and add yarn workspaces and ts-common package and fixed the tsconfig 3 months ago
package.json Fixed lerna build 3 months ago
tsconfig.json Task: Fixed package json for yarn serve and fixed tsconfig for build with all packages to src only 3 months ago

README.md

Express Nodejs App

  • Nodejs
  • Express
  • TypeScript
  • Prettier
  • ESLint
  • Docker
  • DroneCI
  • Lerna Support
  • Support decorators

Quickstart

  • Clone repository
git clone https://git.cubetiqs.com/CUBETIQ/express-nodejs-app.git --recurse-submodules --remote-submodules
  • Update an existed repository
git submodule update --init --remote
  • Add Packages
mkdir packages && git submodule add https://git.cubetiqs.com/CUBETIQ/ts-common.git packages/ts-common && git submodule add https://git.cubetiqs.com/CUBETIQ/cubetiq-express-server.git packages/cubetiq-express-server
  • Install and Build Packages
yarn && npx lerna run build
  • Start
yarn start
  • Navigate
curl http://localhost:3000/info
  • Response
{
    "startedAt": "2021-09-13T13:21:04.184Z",
    "message": "Instance id: presenter#143470",
    "status": "OK"
}

Build application

yarn build

Quick Register Controller

  • Add new controller src/controller/home.controller.ts
import { Request, Response } from "express"
import { Controller, Get, Post, Delete } from "../decorators"

const data: any[] = []

@Controller("/home")
export default class HomeController {
    constructor() {}

    @Get()
    public get(req: Request, res: Response) {
        res.json(data)
    }

    @Post()
    public create(req: Request, res: Response) {
        const body = req.body
        if (body == null) {
            return res.status(400).json({
                status: 400,
                message: "Data is required",
            })
        }

        data.push(body)
        res.json({
            message: "Data created successfully",
            body: body,
        })
    }

    @Delete("/:id")
    public get(req: Request, res: Response) {
        const id = req.params.id
        res.json({
            id: id,
        })
    }
}
  • Register controller into index.ts (src/controllers/index.ts)
import IndexController from "./index.controller"
import PersonController from "./person.controller"
import HomeController from "./home.controller"

export const controllers = [IndexController, PersonController, HomeController]
  • Output registered routes
┌─────────┬──────────────────────┬─────────────────────────────────┐
 (index)          api                       handler             
├─────────┼──────────────────────┼─────────────────────────────────┤
    0         'GET /hello'          'IndexController.index'     
    1      'GET /hello/:name'       'IndexController.hello'     
    2        'GET /person'       'PersonController.getPersons'  
    3        'POST /person'     'PersonController.createPerson' 
    4     'DELETE /person/:id'  'PersonController.deletePerson' 
└─────────┴──────────────────────┴─────────────────────────────────┘

Contributors