JSPM

  • Created
  • Published
  • Downloads 125
  • Score
    100M100P100Q83393F
  • License MIT

Create awesome APIs with Typescript, ExpressJS and Swagger.

Package Exports

  • generator-express-no-stress-typescript

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (generator-express-no-stress-typescript) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

generator-express-no-stress-typescript

Typescript variant of generator-express-no-stress

Create awesome Express.js applications with best of breed tech including Typescipt, structured logging with Pino, API validation and interactive documentation via Swagger, environment based config with dotenv, and Backpack powered builds.

generator-express-no-stress-typescript gets you up and running in seconds. It's ridiculously easy to configure. Heck, just take the defaults. Start it. Write code.

This generator scaffolds a fully functioning REST API server complete with interactive documentation, API validation, structured logging, environment driven config, and more. Simply run the generator and smile :-D

Install

Requires Node 6 or greater

npm install -g yo generator-express-no-stress-typescript

Scaffold

yo express-no-stress-typescript myapp

Note: You may also use Yarn

Run

Run in development mode:

cd myapp
npm run dev

Run in production mode:

npm run compile
npm start

Test

npm test

Debug

Run npm run debug and attach your favourite inspector!

Deploy to the Cloud

e.g. CloudFoundry

cf push myapp

Try it!

Use Yarn

# scaffold
yo express-no-stress-typescript myapp --yarn 

# start
cd myapp
npm start

What you get!

  • Typescript - Typescript is a typed superset of JavaScript that compiles to plain JavaScript
  • Express.js - Fast, unopinionated , minimalist web framework for Node.js
  • Pino - Extremely fast node.js logger, inspired by Bunyan. It also includes a shell utility to pretty-print its log files
  • dotenv - Loads environment variables from .env for nodejs projects
  • Backpack - a minimalistic build system for Node.js projects.
  • Swagger - is a simple yet powerful representation of your RESTful API.
  • SwaggerUI - dynamically generate beautiful documentation and sandbox from a Swagger-compliant API

API Validation

Simply describe your APIs with Swagger and automagically get for free:

  • Interactive documentation
  • API validation

Interactive API Doc

API Validation!

Oops! I the API caller forgot to pass a name field, no stress, we've got this!

Structured Logging

Structured logging out of the box!

raw

pretty

Structured logging pretty printed by default - great for dev!

API Validation Example

Simply describe your APIs with Swagger and automatically get:

  • API request validation
  • Interactive documentation

example

Swagger API spec

swagger: "2.0"
info:
  version: "1.0.0"
  title: My App
  description: My App is Cool
basePath: /api/v1
tags:
  - name: Examples
    description: Simple example endpoints

consumes:
  - application/json
produces:
  - application/json

definitions:
  ExampleBody:
    type: object
    title: example
    required:
      - name
    properties:
      name:
        type: string
        description: The example name

paths:
  /examples:
    get:
      tags:
        - Examples
      description: Fetch all examples
      responses:
        200:
          description: Returns all examples
    post:
      tags:
        - Examples
      description: Create a new example
      parameters:
        - name: body
          in: body
          description: number of items to skip
          required: true
          schema: 
            $ref: "#/definitions/ExampleBody"
      responses:
        200:
          description: Returns all examples

  /examples/{id}:
    get:
      tags:
        - Examples
      parameters:
        - name: id
          in: path
          required: true
          description: The id of the entity to retrieve
          type: integer
      responses:
        200:
          description: Return the example with the specified id
        404:
          description: Example not 

Invoke a POST request via the Interactive doc

License

MIT