{"id":27008994,"url":"https://github.com/xurei/restgoose","last_synced_at":"2025-04-04T09:18:37.177Z","repository":{"id":34088385,"uuid":"146004928","full_name":"xurei/restgoose","owner":"xurei","description":"Model-driven REST API framework using decorators","archived":false,"fork":false,"pushed_at":"2025-03-11T11:20:54.000Z","size":645,"stargazers_count":28,"open_issues_count":24,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-11T12:27:31.968Z","etag":null,"topics":["api","back-end","decorators","framework","mongodb","mongoose","nodejs","rest","restful-api","typescript"],"latest_commit_sha":null,"homepage":"https://xurei.github.io/restgoose","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xurei.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-24T14:55:02.000Z","updated_at":"2022-11-19T18:42:07.000Z","dependencies_parsed_at":"2023-01-15T04:34:11.466Z","dependency_job_id":"66034e4f-832c-4b74-858f-cdecb842ab23","html_url":"https://github.com/xurei/restgoose","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xurei%2Frestgoose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xurei%2Frestgoose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xurei%2Frestgoose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xurei%2Frestgoose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xurei","download_url":"https://codeload.github.com/xurei/restgoose/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247149502,"owners_count":20891954,"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":["api","back-end","decorators","framework","mongodb","mongoose","nodejs","rest","restful-api","typescript"],"created_at":"2025-04-04T09:18:36.687Z","updated_at":"2025-04-04T09:18:37.167Z","avatar_url":"https://github.com/xurei.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Restgoose\nModern REST API framework. [https://xurei.github.io/restgoose](https://xurei.github.io/restgoose/)\n\n[![npm version](https://img.shields.io/npm/v/%40xureilab%2Frestgoose.svg)](https://www.npmjs.com/package/@xureilab/restgoose)\n[![wercker status](https://app.wercker.com/status/8ae5627cc2fb406638c44d6784b02815/s/master \"wercker status\")](https://app.wercker.com/project/byKey/8ae5627cc2fb406638c44d6784b02815)\n[![codecov](https://codecov.io/gh/xurei/restgoose/branch/master/graphs/badge.svg)](https://codecov.io/gh/xurei/restgoose)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/91cdb5b6e3444a7b91949a022bf650f2)](https://www.codacy.com/app/xurei/restgoose?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=xurei/restgoose\u0026amp;utm_campaign=Badge_Grade)\n\n[![CII Best Practices](https://img.shields.io/cii/summary/2181.svg)](https://bestpractices.coreinfrastructure.org/projects/2181)\n[![npms score](https://badges.npms.io/%40xureilab%2Frestgoose.svg)](https://npms.io/search?q=%40xureilab%2Frestgoose)\n[![reddit](https://img.shields.io/badge/reddit-r%2Frestgoose-red.svg?logo=reddit\u0026logoColor=white)](https://www.reddit.com/r/restgoose)\n\n[![wercker status](https://app.wercker.com/status/8ae5627cc2fb406638c44d6784b02815/m/master \"wercker status\")](https://app.wercker.com/project/byKey/8ae5627cc2fb406638c44d6784b02815)\n\n\n#### MongoDB + Typescript + Restgoose = ❤️️\n\nRestgoose exposes your MongoDB database through a REST API with ease. \nIt is driven by the model itself, which reduces the boilerplate code necessary to write simple endpoints.\nIt is open for extension, so you can add complex logic easily too.\n\n## Installation\n\n```bash\nnpm install @xureilab/restgoose\n```\n\n## Minimal usage\nThis creates the typical CRUD endpoints on a model : \n```typescript\nimport { Restgoose, RestgooseModel, all, create, one, prop, remove, rest, update } from '@xureilab/restgoose';\n\n@rest({\n    route: '/todos',\n    methods: [\n        all(), // GET /todos\n        one(), // GET /todos/:id\n        create(), // POST /todos\n        update(), // PATCH /todos/:id\n        remove(), // DELETE /todos/:id\n    ],\n})\nexport class Todo extends RestgooseModel {\n    @prop({required: true})\n    name: string;\n}\n```\nSee the full example (with express/mongoose boilerplates) [in the examples directory](./examples)\n\nCheck out [the docs](https://xurei.github.io/restgoose/) for details. \n\n## The Philosophy behind Restgoose\nRestgoose takes its inspiration from Typegoose and Loopback.\nWe also had some objectives in mind while writing Restgoose :\n- Simple, common behaviors should be really easy to write,\n- The framework should follow a RESTful design,\n- The framework should be simple to add in an existing project,\n- While promoting some best practices, the framework should let the user add \n  complex endpoints without Restgoose if necessary\n- The framework should be small and provide as little middlewares as necessary. \n  Plugins will be created for better cherry-picking. \n\n## Contribute\nWe are looking for collaborators to test the framework in real-world situations, and also make the development faster.\nCheck out the [roadmap](https://xurei.github.io/restgoose/roadmap.html) to see what's going on.  \n\n## Community\nReddit: [https://www.reddit.com/r/restgoose/](https://www.reddit.com/r/restgoose/)\n\n## Support on Beerpay\n[![Beerpay](https://beerpay.io/xurei/restgoose/badge.svg?style=beer-square)](https://beerpay.io/xurei/restgoose)\n[![Beerpay](https://beerpay.io/xurei/restgoose/make-wish.svg?style=flat-square)](https://beerpay.io/xurei/restgoose?focus=wish)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxurei%2Frestgoose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxurei%2Frestgoose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxurei%2Frestgoose/lists"}