{"id":16959266,"url":"https://github.com/chriskalmar/shyft","last_synced_at":"2025-04-09T15:02:10.893Z","repository":{"id":40063989,"uuid":"144681216","full_name":"chriskalmar/shyft","owner":"chriskalmar","description":"⬡ Shyft is a server-side framework for building powerful GraphQL APIs 🚀 ","archived":false,"fork":false,"pushed_at":"2025-03-31T18:46:32.000Z","size":4022,"stargazers_count":54,"open_issues_count":18,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-31T19:37:20.949Z","etag":null,"topics":["acl","api","database","finite-state-machine","generator","graphql","graphql-apis","migrations","model","mutations","permissions","postgres","shyft","validation","workflows"],"latest_commit_sha":null,"homepage":"https://shyft.dev","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/chriskalmar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2018-08-14T06:57:00.000Z","updated_at":"2025-03-27T21:57:36.000Z","dependencies_parsed_at":"2023-09-27T04:43:19.303Z","dependency_job_id":"a593221a-001d-4909-8940-fea615ee4309","html_url":"https://github.com/chriskalmar/shyft","commit_stats":{"total_commits":2060,"total_committers":6,"mean_commits":343.3333333333333,"dds":0.09368932038834954,"last_synced_commit":"ff1c3e64b00fe52d6c5643d2f7c361644595ad92"},"previous_names":[],"tags_count":60,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriskalmar%2Fshyft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriskalmar%2Fshyft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriskalmar%2Fshyft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chriskalmar%2Fshyft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chriskalmar","download_url":"https://codeload.github.com/chriskalmar/shyft/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248055272,"owners_count":21040153,"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":["acl","api","database","finite-state-machine","generator","graphql","graphql-apis","migrations","model","mutations","permissions","postgres","shyft","validation","workflows"],"created_at":"2024-10-13T22:44:37.078Z","updated_at":"2025-04-09T15:02:10.847Z","avatar_url":"https://github.com/chriskalmar.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://shyft.dev\" target=\"_blank\"\u003e\n    \u003cimg\n      src=\"https://shyft.dev/img/shyft-logo.svg\"\n      width=\"150\"\n    /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# Shyft\n\n[![Build Status](https://travis-ci.com/chriskalmar/shyft.svg?branch=master)](https://travis-ci.com/chriskalmar/shyft)\n[![npm version](https://badge.fury.io/js/shyft.svg)](https://badge.fury.io/js/shyft)\n[![codecov](https://codecov.io/gh/chriskalmar/shyft/branch/master/graph/badge.svg)](https://codecov.io/gh/chriskalmar/shyft)\n\nShyft is a server-side framework for building powerful GraphQL APIs.\n\n## Features\n\n- convert data model into a GraphQL API\n- CRUD query/mutations out of the box\n- flexible extension of mutations\n- sync data model with database and provide migrations\n- complex data fetching with multi-level filters\n- offset/limit and cursor-based pagination\n- extremely dynamic permission engine based on roles and data lookups\n- workflows (finite state machines) with fine-grained control over access and input fields\n- extensible with custom queries and mutations (actions)\n- internationalization (i18n) included\n- generate mock data based on data type or custom functions\n- input validation with any validation framework\n- derived fields\n- hooks (pre- and post-processors)\n\n## Install\n\nWith yarn:\n\n```\nyarn add shyft\n```\n\nor using npm:\n\n```\nnpm install -S shyft\n```\n\nGraphQL is a peer dependency. Install it with:\n\n```\nyarn add graphql\n```\n\n## Tests\n\nRun once:\n\n```\nyarn run test\n```\n\nRun in watch mode:\n\n```\nyarn run test-watch\n```\n\n## Integration Tests\n\nRun once:\n\n```\nyarn run test-integration\n```\n\nRun in watch mode:\n\n```\nyarn run test-integration-watch\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchriskalmar%2Fshyft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchriskalmar%2Fshyft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchriskalmar%2Fshyft/lists"}