{"id":18862182,"url":"https://github.com/hapinessjs/hapiness","last_synced_at":"2025-10-30T22:03:35.550Z","repository":{"id":57115144,"uuid":"82903084","full_name":"hapinessjs/hapiness","owner":"hapinessjs","description":"Global repository for hapiness project","archived":false,"fork":false,"pushed_at":"2023-02-27T16:30:07.000Z","size":999,"stargazers_count":32,"open_issues_count":4,"forks_count":2,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-10-28T01:13:57.104Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hapinessjs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-23T08:22:19.000Z","updated_at":"2023-04-14T09:49:15.000Z","dependencies_parsed_at":"2024-06-19T00:16:01.571Z","dependency_job_id":"aecd6e30-f2fb-4f60-b953-f48ea5a30994","html_url":"https://github.com/hapinessjs/hapiness","commit_stats":{"total_commits":209,"total_committers":7,"mean_commits":"29.857142857142858","dds":0.3588516746411483,"last_synced_commit":"8889a66c69d35cfa4dba816271d78f3c352e06d1"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hapinessjs%2Fhapiness","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hapinessjs%2Fhapiness/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hapinessjs%2Fhapiness/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hapinessjs%2Fhapiness/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hapinessjs","download_url":"https://codeload.github.com/hapinessjs/hapiness/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223502362,"owners_count":17155938,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T04:33:36.814Z","updated_at":"2025-10-30T22:03:30.515Z","avatar_url":"https://github.com/hapinessjs.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"http://bit.ly/2mxmKKI\" width=\"500\" alt=\"Hapiness\" /\u003e\n\n\u003cdiv style=\"margin-bottom:20px;\"\u003e\n\u003cdiv style=\"line-height:60px\"\u003e\n    \u003ca href=\"https://travis-ci.org/hapinessjs/hapiness.svg?branch=master\"\u003e\n        \u003cimg src=\"https://travis-ci.org/hapinessjs/hapiness.svg?branch=master\" alt=\"build\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://coveralls.io/github/hapinessjs/hapiness?branch=master\"\u003e\n        \u003cimg src=\"https://coveralls.io/repos/github/hapinessjs/hapiness/badge.svg?branch=master\" alt=\"coveralls\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://david-dm.org/hapinessjs/hapiness\"\u003e\n        \u003cimg src=\"https://david-dm.org/hapinessjs/hapiness.svg\" alt=\"dependencies\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"https://david-dm.org/hapinessjs/hapiness?type=dev\"\u003e\n        \u003cimg src=\"https://david-dm.org/hapinessjs/hapiness/dev-status.svg\" alt=\"devDependencies\" /\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n    \u003ca href=\"https://www.typescriptlang.org/docs/tutorial.html\"\u003e\n        \u003cimg src=\"https://cdn-images-1.medium.com/max/800/1*8lKzkDJVWuVbqumysxMRYw.png\"\n             align=\"right\" alt=\"Typescript logo\" width=\"50\" height=\"50\" style=\"border:none;\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://reactivex.io/rxjs\"\u003e\n        \u003cimg src=\"http://reactivex.io/assets/Rx_Logo_S.png\"\n             align=\"right\" alt=\"ReactiveX logo\" width=\"50\" height=\"50\" style=\"border:none;\" /\u003e\n    \u003c/a\u003e\n    \u003ca href=\"http://hapijs.com\"\u003e\n        \u003cimg src=\"http://bit.ly/2lYPYPw\"\n             align=\"right\" alt=\"Hapijs logo\" width=\"75\" style=\"border:none;\" /\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\n# Web and services application framework\n\n[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**.\n\nIt provides a real enhancement for building **web servers** and it enables to build **modules**, **services**, etc. quickly.\n\nIt has a stable and tested [dependency injection](https://github.com/mgechev/injection-js) system thanks to [Angular](https://angular.io).\n\nBetter development experience with **typings**, **maintainability**, **improvement of productivity** and a **common project structure**.\n\n**Everything in a single uniform framework**.\n\n## Table of contents\n\n* [Technologies](#technologies)\n* [Using Hapiness to create a web server and services](#using-hapiness-to-create-a-web-server-and-services)\n    * [Yarn or NPM it in your package.json](#yarn-or-npm-it-in-your-packagejson)\n    * [Use Hapiness API](#use-hapiness-api)\n* [Contributing](#contributing)\n* [Change History](#change-history)\n* [Maintainers](#maintainers)\n* [License](#license)\n\n## Technologies\n\n - **[HapiJS](https://hapijs.com/)**\n\t - `Hapi` enables developers to focus on writing reusable application logic instead of spending time building infrastructure.\n - **[Joi](https://github.com/hapijs/joi)**\n\t - Object schema description language and validator for JavaScript objects.\n - **[Boom](https://github.com/hapijs/boom)**\n\t - HTTP-friendly error objects\n - **[Good](https://github.com/hapijs/good)**\n\t - `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.\n - **[Typescript](https://www.typescriptlang.org/docs/tutorial.html)**\n\t - `TypeScript` is a typed superset of JavaScript that compiles to plain JavaScript.\n - **[RxJS](http://reactivex.io/rxjs)**\n\t - `RxJS` is a set of libraries for composing asynchronous and event-based programs using observable sequences and fluent query operators.\n\nAll those technologies are `Typescript` ready. It will help to build web servers and maintain them easier.\n\n[Back to top](#table-of-contents)\n\n## Using Hapiness to create a web server and services\n\n### `yarn` or `npm` it in your `package.json`\n\n```bash\n$ npm install --save @hapiness/core rxjs\n\nor\n\n$ yarn add @hapiness/core rxjs\n```\n\n```javascript\n\"dependencies\": {\n    \"@hapiness/core\": \"^1.5.0\",\n    //...\n}\n//...\n```\n\n### Use Hapiness API\n\nActually, we're in : **v1.5.0**\n\nSee [API](https://github.com/hapinessjs/hapiness/blob/master/API.md) Reference to know what's already implemented.\n\n[Back to top](#table-of-contents)\n\n## Contributing\n\nTo set up your development environment:\n\n1. clone the repo to your workspace,\n2. in the shell `cd` to the main folder,\n3. hit `npm or yarn install`,\n4. run `npm or yarn run test`.\n    * It will lint the code and execute all tests.\n    * The test coverage report can be viewed from `./coverage/lcov-report/index.html`.\n\n[Back to top](#table-of-contents)\n\n## Change History\n* v1.6.0 (2018-11-27)\n    * Request in DI: Add request reference inside route DI\n* v1.5.5 (2018-10-15)\n    * Boostrap fix: Exit the process if it fails\n* v1.5.4 (2018-06-19)\n    * WebSocketServer: add sec-websocket-protocol in response\n* v1.5.3 (2018-05-29)\n    * HttpRequestInfo types\n    * Add credentials\n* v1.5.2 (2018-05-09)\n    * Shutdown all extensions if one failed in bootstrap\n* v1.5.1 (2018-04-06)\n    * Allow to import many time the same modules if it has no routes inside\n* v1.5.0 (2018-03-27)\n    * EventManager Extension\n    * Documentation\n* v1.4.0 (2018-03-26)\n    * Extensions: add timeout\n    * Extensions: shutdown\n    * Latest packages' versions\n    * Documentation\n* v1.3.1 (2018-02-27)\n    * Keep request in the Socket instance\n    * Update dependencies\n* v1.3.0 (2017-11-30)\n    * Option that allow WS Server Ext to share Http Server Ext port\n    * Handle HapiJS connections system to listen multiple ports\n    * Documentation\n* v1.2.2 (2017-11-20)\n    * Export `createDecorator()`, `extractMetadata()`, `extractMetadataByDecorator`, `errorHandler()` methods and `DependencyInjection` class\n    * Documentation\n* v1.2.0 (2017-11-18)\n    * Http Handler, Observable can set headers\n    * Use `injection-js` from `npm`\n    * Change build system\n    * Latest packages' versions\n    * Fix tests related to latest `mocha` version\n    * Documentation\n* v1.1.1 (2017-10-22)\n    * Build in `commonjs`\n    * Latest packages' versions\n    * Documentation\n* v1.1.0 (2017-10-16)\n    * `Websocket` Server: Secure configuration\n    * Documentation\n* v1.0.0 (2017-10-05)\n    * Publish all features of API\n    * First stable version\n\n[Back to top](#table-of-contents)\n\n## Maintainers\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003ctd colspan=\"5\" align=\"center\"\u003e\u003ca href=\"https://www.tadaweb.com\"\u003e\u003cimg src=\"http://bit.ly/2xHQkTi\" width=\"117\" alt=\"tadaweb\" /\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Juneil\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/6546204?v=3\u0026s=117\" width=\"117\"/\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/antoinegomez\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/997028?v=3\u0026s=117\" width=\"117\"/\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/reptilbud\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/6841511?v=3\u0026s=117\" width=\"117\"/\u003e\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/njl07\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/1673977?v=3\u0026s=117\" width=\"117\"/\u003e\u003c/a\u003e\u003c/td\u003e\n\t\u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/tlerias\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/3011845?v=3\u0026s=117\" width=\"117\"/\u003e\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/Juneil\"\u003eJulien Fauville\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/antoinegomez\"\u003eAntoine Gomez\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/reptilbud\"\u003eSébastien Ritz\u003c/a\u003e\u003c/td\u003e\n        \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/njl07\"\u003eNicolas Jessel\u003c/a\u003e\u003c/td\u003e\n\t\u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/tlerias\"\u003eTara Lerias\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n[Back to top](#table-of-contents)\n\n## License\n\nCopyright (c) 2017 **Hapiness** Licensed under the [MIT license](https://github.com/hapinessjs/hapiness/blob/master/LICENSE.md).\n\n[Back to top](#table-of-contents)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhapinessjs%2Fhapiness","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhapinessjs%2Fhapiness","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhapinessjs%2Fhapiness/lists"}