{"id":17654028,"url":"https://github.com/mindsers/yabf","last_synced_at":"2026-01-30T11:19:58.551Z","repository":{"id":48021960,"uuid":"141014515","full_name":"mindsers/yabf","owner":"mindsers","description":"Yet Another Basic Framework for NodeJS","archived":false,"fork":false,"pushed_at":"2023-01-03T17:17:13.000Z","size":1197,"stargazers_count":2,"open_issues_count":9,"forks_count":0,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-06-06T22:40:07.653Z","etag":null,"topics":["framework","javascript","nodejs","typescript"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/yabf","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/mindsers.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["mindsers"],"patreon":"mindsers","open_collective":null,"ko_fi":"mindsers","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":"mindsers","otechie":null,"custom":"nathanaelcherrier.com/en/support"}},"created_at":"2018-07-15T09:30:27.000Z","updated_at":"2021-01-18T12:50:53.000Z","dependencies_parsed_at":"2023-02-01T08:16:07.839Z","dependency_job_id":null,"html_url":"https://github.com/mindsers/yabf","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/mindsers/yabf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mindsers%2Fyabf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mindsers%2Fyabf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mindsers%2Fyabf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mindsers%2Fyabf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mindsers","download_url":"https://codeload.github.com/mindsers/yabf/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mindsers%2Fyabf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28911821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T08:15:08.179Z","status":"ssl_error","status_checked_at":"2026-01-30T08:14:31.507Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","javascript","nodejs","typescript"],"created_at":"2024-10-23T12:08:24.184Z","updated_at":"2026-01-30T11:19:58.534Z","avatar_url":"https://github.com/mindsers.png","language":"TypeScript","funding_links":["https://github.com/sponsors/mindsers","https://patreon.com/mindsers","https://ko-fi.com/mindsers","https://issuehunt.io/r/mindsers","nathanaelcherrier.com/en/support","https://www.patreon.com/bePatron?u=9715649","https://www.patreon.com/mindsers"],"categories":[],"sub_categories":[],"readme":"# Yabf\n\n[![npm](https://img.shields.io/npm/v/yabf.svg?style=flat-square)](https://www.npmjs.com/package/yabf)\n[![npm](https://img.shields.io/npm/dt/yabf.svg?style=flat-square)](https://www.npmjs.com/package/yabf)\n[![npm](https://img.shields.io/npm/l/yabf.svg?style=flat-square)](https://github.com/Mindsers/yabf/blob/master/LICENSE)\n[![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors)\n[![Patreon](https://img.shields.io/badge/support-patreon-F96854.svg?logo=patreon\u0026style=flat-square)](https://www.patreon.com/bePatron?u=9715649)\n[![Discourse](https://img.shields.io/discourse/https/community.nathanaelcherrier.com/posts.svg?color=00aeef\u0026logo=discourse\u0026logoColor=00aeef\u0026style=flat-square)](https://community.nathanaelcherrier.com)\n\n**Yet Another Basic Framework** for NodeJS.\n\nIt is a learning experience: I wouldn't use [expressjs](https://expressjs.com) as usual but learn how to make/code dependency injection, routing, http requests, and other development patterns/paradigms/concepts by myself.\n\nIt can be use as a base for server projects. Of course so much things are missing and you will have to develop it yourself or create an [issue in this repo](https://github.com/mindsers/yabf/issues).\n\n*Yabf* work either with JavaScript and TypeScript projects.\n\n## Install\n\nTo use *Yabf* in your project you have to import it :\n\n```sh\nyarn add yabf@latest\n```\n\n## Usage\n\n*Yabf* works with controller and services. To load your controllers and services there are two methods in `WebApplication`: `declare` for controllers and `provide` for services or data.\n\nAfter declaring all your classes, you have to start the server.\n\n```ts\nimport { WebApplication } from 'yabf'\n\nimport { MailService } from './services/mail-service'\nimport { MainController } from './controllers/mail-controller'\n\n(function main() {\n  const app = WebApplication.createInstance()\n\n  app.provide(MailService)\n  app.declare(MainController)\n\n  app.start()\n})()\n```\n\nWhy using `WebApplication.createInstance()` instead of `new WebApplication()` ? When you provide services or declare controllers you use the *Yabf* dependency injector. All the *Yabf* services also use this dependency injector. So, `WebApplication` need to provide other internal services before your start to using it.\n\nYou can ask *Yabf* to inject dependencies into your controllers or services. However, controllers **can't be injected** in other controllers.\nz\n```ts\napp.provide(MailService)\napp.declare(MainController, [MailService])\n```\n\nFor more details, please refer to the [wiki](https://github.com/mindsers/yabf/wiki) or [docs files](https://github.com/mindsers/yabf/tree/develop/docs).\n\n## Contribution\n\nContributions to the source code of *Yabf* are welcomed and greatly appreciated. For help on how to contribute in this project, please refer to [How to contribute to *Yabf*](https://github.com/mindsers/yabf/blob/develop/CONTRIBUTING.md).\n\nTo see the contributors list, go to the [CONTRIBUTORS.md](https://github.com/mindsers/yabf/blob/develop/CONTRIBUTORS.md) file.\n\n## Support\n\n*Yabf* is licensed under an MIT license, which means that it's completely free open source software. Unfortunately, *Yabf* doesn't make it itself. Which will result in many late, beer-filled nights of development for me.\n\nIf you're using *Yabf* and want to support the development, you now have the chance! Go on my [Patreon page](https://www.patreon.com/mindsers) and become my joyful patron!!\n\n[![Become a Patron!](https://c5.patreon.com/external/logo/become_a_patron_button.png)](https://www.patreon.com/bePatron?u=9715649)\n\nFor help on how to support *Yabf*, please refer to [The awesome people who support *Yabf*](https://github.com/Mindsers/yabf/blob/develop/SPONSORS.md).\n\n\u003c!-- ### Premium sponsors --\u003e\n\n## License\n\nThis project is under the MIT License. (see LICENSE file in the root directory)\n\n\u003e MIT License\n\u003e\n\u003e Copyright (c) 2018 Nathanael CHERRIER\n\u003e\n\u003e Permission is hereby granted, free of charge, to any person obtaining a copy\n\u003e of this software and associated documentation files (the \"Software\"), to deal\n\u003e in the Software without restriction, including without limitation the rights\n\u003e to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n\u003e copies of the Software, and to permit persons to whom the Software is\n\u003e furnished to do so, subject to the following conditions:\n\u003e\n\u003e The above copyright notice and this permission notice shall be included in all\n\u003e copies or substantial portions of the Software.\n\u003e\n\u003e THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n\u003e IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n\u003e FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n\u003e AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n\u003e LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n\u003e OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n\u003e SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmindsers%2Fyabf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmindsers%2Fyabf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmindsers%2Fyabf/lists"}