New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

structure-app-nodejs

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

structure-app-nodejs

Boilerplate for nodejs app

latest
Source
npmnpm
Version
1.0.0
Version published
Maintainers
1
Created
Source

VNLP source base

VNLP

Base source for VNLP projects

Guide

  • Respond with error

    • Using throw with VError to response with error
  • Logger

    • Using VLogger to log in source code
    • Log rules:
      • logger.info: when you need to store an information of an action
      • logger.error: when you need to log an error
      • logger.warn: when you need to log warning, it doesn't affect current flow but can affect system in the future
      • logger.debug: when you need to log something make you debug easier
    • Change log level according to deploy environment
  • Coding convention

    • Reference: https://github.com/airbnb/javascript
    • All third-party lib must be imported on top of file
  • Dependencies

    • Must not import sibling file directly. For example:
      • Service cannot import another service directly, must add it as a dependencies and pass to service factory instead.
    • Must not import code of upper layer. For example:
      • Service can import common functions, helpers functions, but not vice versa.
  • Define JSDoc

  • Recommend VSCode extensions

    • GitLens
    • Code Spell Checker
    • Javascript(ES6) Code Snippets
    • Todo Tree

Step by step to create a new module

  • Create new module directory in /modules

  • Define new route

    • Create new api route in api.js
    • Attach middlewares: verify token, validate request data, ...
    • Import controller
  • Define middleware, validation

    • Create new validation to validate input data of this api
    • Using Joi schema to validate data, you can find guide here
    • Using validate built-in function of express-validation to attach to API like a middleware
  • Define new controller

    • Import services and dependencies
    • Create service with serviceFactory
    • Extract data input from request
    • Respond using res.success
    • Wrapper method of controller with tryCatchWrapper in constructor
  • Define new service

    • Create a service inside directory /modules/.../services
    • In service file, create a class Service with input are list of dependencies and return a function
    • Write business logic in service function
  • Define new model

    • To mapping Data with DB, you should create a model according to a collection in MongoDB
    • Define options with collection, schema of model in /modules/.../model.js
  • Define new repository

    • To interact with DB, you should create a repository
    • A new repository will extends from a BaseRepository
    • If you want to create some custom action to DB, you can create method in repository file.

Integration

  • Logger (Pino with ELK stack)
  • Tracing (Jaeger)
  • Message Queue (bull, RabbitMQ or Kafka)

Run

  • Run npm install to install packages
  • Run npm start to start server
  • Run npm run test to run tests
  • Run npm run dev to start server with DEBUG level

TODO

  • Add pre-commit, lint to clean code
  • Add redis connection
  • Add log to monitor slow query DB
  • Create websocket components
  • Create Dockerfile
  • Create documentation with Swagger
  • Create metrics with Prometheus
  • Create cli command to generate module in one command

Contribute

  • VNLP team members can create PR to this repo to contribute to this source
  • If you have a problem with this source, you can add an issue and tag @duysmile or email me duy210697@gmail.com

FAQs

Package last updated on 29 Nov 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts