{"id":16650266,"url":"https://github.com/hfreire/serverful","last_synced_at":"2025-03-21T16:31:24.430Z","repository":{"id":18705154,"uuid":"85106346","full_name":"hfreire/serverful","owner":"hfreire","description":"A kickass 💪 web server 🙀 with all the bells 🔔 and whistles ✨","archived":false,"fork":false,"pushed_at":"2023-12-19T17:43:17.000Z","size":4956,"stargazers_count":6,"open_issues_count":19,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-02T06:07:34.531Z","etag":null,"topics":["framework","github-actions","hapi-server","hapijs","rest","restful","restful-api","server","server-side"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/hfreire.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","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},"funding":{"github":"hfreire","custom":"https://paypal.me/hfreire"}},"created_at":"2017-03-15T18:18:05.000Z","updated_at":"2023-01-31T16:48:35.000Z","dependencies_parsed_at":"2023-11-27T15:31:09.094Z","dependency_job_id":"1445fab2-fa2d-49a8-8e1f-77dcb0a00173","html_url":"https://github.com/hfreire/serverful","commit_stats":{"total_commits":1706,"total_committers":7,"mean_commits":"243.71428571428572","dds":0.630715123094959,"last_synced_commit":"6405bdb9a7e7b9dd86f0a1598e8aef2c4713208a"},"previous_names":[],"tags_count":177,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hfreire%2Fserverful","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hfreire%2Fserverful/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hfreire%2Fserverful/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hfreire%2Fserverful/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hfreire","download_url":"https://codeload.github.com/hfreire/serverful/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244829500,"owners_count":20517311,"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":["framework","github-actions","hapi-server","hapijs","rest","restful","restful-api","server","server-side"],"created_at":"2024-10-12T09:16:05.193Z","updated_at":"2025-03-21T16:31:24.091Z","avatar_url":"https://github.com/hfreire.png","language":"JavaScript","readme":"# A kickass :muscle: web server :scream_cat: with all the bells :bell: and whistles :sparkles:\n\n[![](https://github.com/hfreire/serverful/workflows/ci/badge.svg)](https://github.com/hfreire/serverful/actions?workflow=ci)\n[![Coverage Status](https://coveralls.io/repos/github/hfreire/serverful/badge.svg?branch=master)](https://coveralls.io/github/hfreire/serverful?branch=master)\n[![Known Vulnerabilities](https://snyk.io/test/github/hfreire/serverful/badge.svg)](https://snyk.io/test/github/hfreire/serverful)\n[![](https://img.shields.io/github/release/hfreire/serverful.svg)](https://github.com/hfreire/serverful/releases)\n[![Version](https://img.shields.io/npm/v/serverful.svg)](https://www.npmjs.com/package/serverful)\n[![Downloads](https://img.shields.io/npm/dt/serverful.svg)](https://www.npmjs.com/package/serverful)\n\n\u003e Uses [hapi](https://github.com/hapijs/hapijs) loaded with most important plugins ([Boom](https://github.com/hapijs/boom), [Vision](https://github.com/hapijs/vision), [Inert](https://github.com/hapijs/inert), et al.) and dynamically configures your routes\n\n### Features\n* Out-of-the-box `/ping` and a `/healthcheck` (using [health-checkup](https://github.com/hfreire/health-checkup)) endpoints :white_check_mark:\n* [Swagger](http://swagger.io) API `/docs` :white_check_mark:\n* Response pagination using [hapi-pagination](https://github.com/fknop/hapi-pagination) :white_check_mark:\n* Logs HTTP requests and server errors using [modern-logger](https://github.com/hfreire/modern-logger) :white_check_mark:\n\n### How to install\n```\nnpm install serverful\n```\n\n### How to use\n\n#### Use it in your app\nLoad module and start a server\n```javascript\nconst Serverful = require('serverful')\n\nconst server = new Serverful()\nserver.start()\n```\n\n#### Available environment variables\nVariable | Description | Required | Default value\n:---:|:---:|:---:|:---:\nNAME | The name of the app. | false | `undefined`\nVERSION | The version of the app. | false | `undefined`\nPORT | The port to be used by the HTTP server. | false | `3000`\nAPI_KEYS | The secret keys that should be used when securing endpoints. | false | `undefined`\nSO_TIMEOUT | TCP socket connection timeout. | false | `120000`\nBASE_PATH | Base path to be prefixed to all available endpoint paths. | false | `/`\nPING_PATH | Endpoint path for pinging app. | false | `/ping`\nHEALTHCHECK_PATH | Endpoint for checking app health. | false | `/healthcheck`\nLOG_LEVEL | The log level verbosity. | false | `info`\nENVIRONMENT | The environment the app is running on. | false | `undefined`\nROLLBAR_API_KEY | The server API key used to talk with Rollbar. | false | `undefined`\n\n### How to contribute\nYou can contribute either with code (e.g., new features, bug fixes and documentation) or by [donating 5 EUR](https://paypal.me/hfreire/5). You can read the [contributing guidelines](CONTRIBUTING.md) for instructions on how to contribute with code.\n\nAll donation proceedings will go to the [Sverige för UNHCR](https://sverigeforunhcr.se), a swedish partner of the [UNHCR - The UN Refugee Agency](http://www.unhcr.org), a global organisation dedicated to saving lives, protecting rights and building a better future for refugees, forcibly displaced communities and stateless people.\n\n### Used by\n* [get-me-a-date](https://github.com/hfreire/get-me-a-date) - :heart_eyes: Help me get a :cupid: date tonight :first_quarter_moon_with_face:\n* [watch-rtp-play](https://github.com/hfreire/watch-rtp-play) - :tv: Watch and :radio: listen 🇵🇹 RTP Play without a :computer: browser\n* [browser-as-a-service](https://github.com/hfreire/browser-as-a-service) - A web browser :earth_americas: hosted as a service, to render your JavaScript web pages as HTML\n* [my-flic-hub](https://github.com/hfreire/my-flic-hub) - My own flic hub :tm: for the :earth_africa: world's smartest :red_circle: button\n\n### License\nRead the [license](./LICENSE.md) for permissions and limitations.\n","funding_links":["https://github.com/sponsors/hfreire","https://paypal.me/hfreire","https://paypal.me/hfreire/5"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhfreire%2Fserverful","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhfreire%2Fserverful","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhfreire%2Fserverful/lists"}