@hapiness/core
Version:
Project to have a HapiJS (https://hapijs.com/) based framework to create easier NodeJS back-end with some awesome features
198 lines (162 loc) • 7.88 kB
Markdown
<img src="http://bit.ly/2mxmKKI" width="500" alt="Hapiness" />
<div style="margin-bottom:20px;">
<div style="line-height:60px">
<a href="https://travis-ci.org/hapinessjs/hapiness.svg?branch=master">
<img src="https://travis-ci.org/hapinessjs/hapiness.svg?branch=master" alt="build" />
</a>
<a href="https://coveralls.io/github/hapinessjs/hapiness?branch=master">
<img src="https://coveralls.io/repos/github/hapinessjs/hapiness/badge.svg?branch=master" alt="coveralls" />
</a>
<a href="https://david-dm.org/hapinessjs/hapiness">
<img src="https://david-dm.org/hapinessjs/hapiness.svg" alt="dependencies" />
</a>
<a href="https://david-dm.org/hapinessjs/hapiness?type=dev">
<img src="https://david-dm.org/hapinessjs/hapiness/dev-status.svg" alt="devDependencies" />
</a>
</div>
<div>
<a href="https://www.typescriptlang.org/docs/tutorial.html">
<img src="https://cdn-images-1.medium.com/max/800/1*8lKzkDJVWuVbqumysxMRYw.png"
align="right" alt="Typescript logo" width="50" height="50" style="border:none;" />
</a>
<a href="http://reactivex.io/rxjs">
<img src="http://reactivex.io/assets/Rx_Logo_S.png"
align="right" alt="ReactiveX logo" width="50" height="50" style="border:none;" />
</a>
<a href="http://hapijs.com">
<img src="http://bit.ly/2lYPYPw"
align="right" alt="Hapijs logo" width="75" style="border:none;" />
</a>
</div>
</div>
# Web and services application framework
[Hapiness](https://github.com/hapinessjs) is a web framework based on [HapiJS](https://hapijs.com/) and enhanced with [Dependency Injection](https://github.com/mgechev/injection-js), strong **modularisation** and **decorators**.
It provides a real enhancement for building **web servers** and it enables to build **modules**, **services**, etc. quickly.
It has a stable and tested [dependency injection](https://github.com/mgechev/injection-js) system thanks to [Angular](https://angular.io).
Better development experience with **typings**, **maintainability**, **improvement of productivity** and a **common project structure**.
**Everything in a single uniform framework**.
## Table of contents
* [Technologies](#technologies)
* [Using Hapiness to create a web server and services](#using-hapiness-to-create-a-web-server-and-services)
* [Yarn or NPM it in your package.json](#yarn-or-npm-it-in-your-packagejson)
* [Use Hapiness API](#use-hapiness-api)
* [Contributing](#contributing)
* [Change History](#change-history)
* [Maintainers](#maintainers)
* [License](#license)
## Technologies
- **[HapiJS](https://hapijs.com/)**
- `Hapi` enables developers to focus on writing reusable application logic instead of spending time building infrastructure.
- **[Joi](https://github.com/hapijs/joi)**
- Object schema description language and validator for JavaScript objects.
- **[Boom](https://github.com/hapijs/boom)**
- HTTP-friendly error objects
- **[Good](https://github.com/hapijs/good)**
- `Good` is a `Hapi` plugin to monitor and report on a variety of `Hapi` server events as well as ops information from the host machine.
- **[Typescript](https://www.typescriptlang.org/docs/tutorial.html)**
- `TypeScript` is a typed superset of JavaScript that compiles to plain JavaScript.
- **[RxJS](http://reactivex.io/rxjs)**
- `RxJS` is a set of libraries for composing asynchronous and event-based programs using observable sequences and fluent query operators.
All those technologies are `Typescript` ready. It will help to build web servers and maintain them easier.
[Back to top](#table-of-contents)
## Using Hapiness to create a web server and services
### `yarn` or `npm` it in your `package.json`
```bash
$ npm install --save @hapiness/core rxjs
or
$ yarn add @hapiness/core rxjs
```
```javascript
"dependencies": {
"@hapiness/core": "^1.5.0",
//...
}
//...
```
### Use Hapiness API
Actually, we're in : **v1.5.0**
See [API](https://github.com/hapinessjs/hapiness/blob/master/API.md) Reference to know what's already implemented.
[Back to top](#table-of-contents)
## Contributing
To set up your development environment:
1. clone the repo to your workspace,
2. in the shell `cd` to the main folder,
3. hit `npm or yarn install`,
4. run `npm or yarn run test`.
* It will lint the code and execute all tests.
* The test coverage report can be viewed from `./coverage/lcov-report/index.html`.
[Back to top](#table-of-contents)
## Change History
* v1.6.0 (2018-11-27)
* Request in DI: Add request reference inside route DI
* v1.5.5 (2018-10-15)
* Boostrap fix: Exit the process if it fails
* v1.5.4 (2018-06-19)
* WebSocketServer: add sec-websocket-protocol in response
* v1.5.3 (2018-05-29)
* HttpRequestInfo types
* Add credentials
* v1.5.2 (2018-05-09)
* Shutdown all extensions if one failed in bootstrap
* v1.5.1 (2018-04-06)
* Allow to import many time the same modules if it has no routes inside
* v1.5.0 (2018-03-27)
* EventManager Extension
* Documentation
* v1.4.0 (2018-03-26)
* Extensions: add timeout
* Extensions: shutdown
* Latest packages' versions
* Documentation
* v1.3.1 (2018-02-27)
* Keep request in the Socket instance
* Update dependencies
* v1.3.0 (2017-11-30)
* Option that allow WS Server Ext to share Http Server Ext port
* Handle HapiJS connections system to listen multiple ports
* Documentation
* v1.2.2 (2017-11-20)
* Export `createDecorator()`, `extractMetadata()`, `extractMetadataByDecorator`, `errorHandler()` methods and `DependencyInjection` class
* Documentation
* v1.2.0 (2017-11-18)
* Http Handler, Observable can set headers
* Use `injection-js` from `npm`
* Change build system
* Latest packages' versions
* Fix tests related to latest `mocha` version
* Documentation
* v1.1.1 (2017-10-22)
* Build in `commonjs`
* Latest packages' versions
* Documentation
* v1.1.0 (2017-10-16)
* `Websocket` Server: Secure configuration
* Documentation
* v1.0.0 (2017-10-05)
* Publish all features of API
* First stable version
[Back to top](#table-of-contents)
## Maintainers
<table>
<tr>
<td colspan="5" align="center"><a href="https://www.tadaweb.com"><img src="http://bit.ly/2xHQkTi" width="117" alt="tadaweb" /></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Juneil"><img src="https://avatars3.githubusercontent.com/u/6546204?v=3&s=117" width="117"/></a></td>
<td align="center"><a href="https://github.com/antoinegomez"><img src="https://avatars3.githubusercontent.com/u/997028?v=3&s=117" width="117"/></a></td>
<td align="center"><a href="https://github.com/reptilbud"><img src="https://avatars3.githubusercontent.com/u/6841511?v=3&s=117" width="117"/></a></td>
<td align="center"><a href="https://github.com/njl07"><img src="https://avatars3.githubusercontent.com/u/1673977?v=3&s=117" width="117"/></a></td>
<td align="center"><a href="https://github.com/tlerias"><img src="https://avatars1.githubusercontent.com/u/3011845?v=3&s=117" width="117"/></a></td>
</tr>
<tr>
<td align="center"><a href="https://github.com/Juneil">Julien Fauville</a></td>
<td align="center"><a href="https://github.com/antoinegomez">Antoine Gomez</a></td>
<td align="center"><a href="https://github.com/reptilbud">Sébastien Ritz</a></td>
<td align="center"><a href="https://github.com/njl07">Nicolas Jessel</a></td>
<td align="center"><a href="https://github.com/tlerias">Tara Lerias</a></td>
</tr>
</table>
[Back to top](#table-of-contents)
## License
Copyright (c) 2017 **Hapiness** Licensed under the [MIT license](https://github.com/hapinessjs/hapiness/blob/master/LICENSE.md).
[Back to top](#table-of-contents)