Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/release/v4' into release/v4
Browse files Browse the repository at this point in the history
  • Loading branch information
kamilmysliwiec committed Sep 5, 2017
2 parents 0a6034f + e220333 commit 0dcfb30
Showing 1 changed file with 25 additions and 37 deletions.
62 changes: 25 additions & 37 deletions Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,35 @@

## Description

Nest is a powerful web framework for [Node.js](http://nodejs.org), which helps you effortlessly build efficient, scalable applications. It uses modern JavaScript, is built with [TypeScript](http://www.typescriptlang.org) and combines best concepts of both OOP (Object Oriented Progamming) and FP (Functional Programming).
<p>Nest is a framework for building efficient, scalable <a href="http://nodejs.org" target="_blank">Node.js</a> web applications. It uses modern JavaScript, is built with <a href="http://www.typescriptlang.org" target="_blank">TypeScript</a> and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reactive Programming).</p>
<p>Under the hood, Nest makes use of <a href="https://expressjs.com/" target="_blank">Express</a>, allowing for easy use of the myriad third-party plugins which are available.</p>

Nest is using well-known—[Express](https://github.com/expressjs/express) library under the hood. This means that you can quickly start using Nest without worrying about third party plugins.

## Philosophy

<p>In recent years, thanks to Node.js, JavaScript has become the “lingua franca” of the web for both front and backend applications, giving rise to awesome projects like <a href="https://angular.io/" target="_blank">Angular</a>, <a href="https://github.com/facebook/react" target="_blank">React</a> and <a href="https://github.com/vuejs/vue" target="_blank">Vue</a> which improve developer productivity and enable the construction of fast, testable, extensible frontend applications. However, on the server-side, while there are a lot of superb libraries, helpers and tools for Node, none of them effectively solve the main problem - the architecture.</p>
<p>Nest aims to provide an application architecture out of the box which allows for effortless creation of highly testable, scalable, loosely coupled and easily maintainable applications.</p>

## Features

<ul>
<li>Built with <a href="http://www.typescriptlang.org" target="_blank">TypeScript</a></li>
<li><strong>Easy</strong> to learn - syntax similar to <a href="https://angular.io/" target="_blank">Angular</a></li>
<li><strong>Familiar</strong> - based on well-known libraries (<a href="https://github.com/expressjs/express" target="_blank">Express</a> / <a href="https://github.com/socketio/socket.io" target="_blank">socket.io</a>)</li>
<li><strong>Dependency Injection</strong> - built-in asynchronous <strong>IoC</strong> container with a <strong>hierarchical injector</strong></li>
<li><strong>WebSockets</strong> module (based on <a href="https://github.com/socketio/socket.io" target="_blank">socket.io</a>, but you can bring your own library, by making use of <code>WsAdapter</code>)</li>
<li><strong>Modular</strong> - defines an easy to follow module definition pattern so you can split your system into reusable modules</li>
<li><strong>Reactive microservice</strong> support with message patterns (built-in transport via TCP / <a href="https://redis.io/" target="_blank">Redis</a>, but other communication schemes can be implemented with <code>CustomTransportStrategy</code>)</li>
<li><strong>Exception layer</strong> - throwable web exceptions with status codes, exception filters</li>
<li><strong>Pipes</strong> - synchronous & asynchronous (e.g. validation purposes)</li>
<li><strong>Guards</strong> - attach additional logic in a declarative manner (e.g. role-based access control)</li>
<li><strong>Interceptors</strong> - built on top of <a href="https://github.com/reactivex/rxjs" target="blank">RxJS</a></li>
<li>Testing utilities (both <strong>e2e & unit</strong> tests)</li>
</ul>

## Installation

**Install the TypeScript Starter Project with Git::**
**Install the TypeScript Starter Project with Git:**
```bash
$ git clone https://github.com/kamilmysliwiec/nest-typescript-starter.git project
$ cd project
Expand All @@ -43,44 +65,10 @@ $ npm run start
$ npm i --save @nestjs/core @nestjs/common @nestjs/microservices @nestjs/websockets @nestjs/testing reflect-metadata rxjs
```

## Philosophy

JavaScript is awesome. This language is no longer just a trash to create simple animations in the browser. Now, the front end world is rich in variety of tools. We have a lot of amazing frameworks / libraries such as [Angular](https://angular.io/), [React](https://github.com/facebook/react) or [Vue](https://github.com/vuejs/vue), which improves our development process and makes our applications fast and flexible.

[Node.js](http://nodejs.org) gave us a possibility to use this language also on the server side. There are a lot of superb libraries, helpers and tools for node, but non of them do not solve the main problem - the architecture.

We want to create scalable, loosely coupled and easy to maintain applications. Let's show the entire world node.js potential together!

## Features

- Built on top of [TypeScript](http://www.typescriptlang.org)
- Easy to learn - syntax is similar to [Angular](https://angular.io/)
- Based on well-known libraries ([Express](https://github.com/expressjs/express) / [socket.io](https://github.com/socketio/socket.io)) so you could share your experience
- Supremely useful Dependency Injection, built-in asynchronous **Inversion of Control** container
- **Hierarchical injector** - increase abstraction in your application by creating reusable, loosely coupled modules with type injection
- **WebSockets** module (based on [socket.io](https://github.com/socketio/socket.io), although you can use any other library using adapter)
- Own modularity system (split your system into reusable modules)
- Reactive **microservices** support with messages patterns (built-in transport via TCP / [Redis](https://redis.io/), but you can use any other type of communication using `CustomTransportStrategy`)
- Exceptions handler layer, exception filters, **synchronous & asynchronous pipes** layer
- **Guards** & Reflector - attach additional logic in more declaritive way (e.g. role-based access control)
- **Interceptors** built on top of [RxJS](https://github.com/Reactive-Extensions/RxJS) library,
- Testing utilities (both **e2e & unit** tests)

## Documentation & Quick Start

[Documentation & Tutorial](http://docs.nestjs.com)

## Starter repos

- [TypeScript](https://github.com/kamilmysliwiec/nest-typescript-starter)
- [Babel](https://github.com/kamilmysliwiec/nest-babel-starter/)

## Useful references

- [Modules](http://docs.nestjs.com/modules.html)
- [Examples](http://docs.nestjs.com/examples.html)
- [API Reference](http://docs.nestjs.com/api-reference.html)

## People

- Author - [Kamil Myśliwiec](http://kamilmysliwiec.com)
Expand Down

0 comments on commit 0dcfb30

Please sign in to comment.