{"id":13560477,"url":"https://github.com/exogee-technology/graphweaver","last_synced_at":"2026-04-02T22:57:18.483Z","repository":{"id":160880493,"uuid":"527419450","full_name":"exogee-technology/graphweaver","owner":"exogee-technology","description":"Turn multiple data sources into a single GraphQL API","archived":false,"fork":false,"pushed_at":"2024-05-23T06:38:10.000Z","size":15819,"stargazers_count":445,"open_issues_count":12,"forks_count":14,"subscribers_count":9,"default_branch":"main","last_synced_at":"2024-05-23T06:46:43.126Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://graphweaver.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exogee-technology.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-22T05:09:08.000Z","updated_at":"2024-08-16T06:00:16.225Z","dependencies_parsed_at":"2023-06-03T03:45:38.013Z","dependency_job_id":"28e89481-ecef-4615-a656-488e87af3a72","html_url":"https://github.com/exogee-technology/graphweaver","commit_stats":null,"previous_names":[],"tags_count":59,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exogee-technology%2Fgraphweaver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exogee-technology%2Fgraphweaver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exogee-technology%2Fgraphweaver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exogee-technology%2Fgraphweaver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exogee-technology","download_url":"https://codeload.github.com/exogee-technology/graphweaver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247036868,"owners_count":20873036,"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-08-01T13:00:44.791Z","updated_at":"2026-02-17T06:15:25.024Z","avatar_url":"https://github.com/exogee-technology.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","包","CMS","Packages","API","Content Federation"],"sub_categories":["内容管理系统","IDE","Content management systems","Samples"],"readme":"\u003c!-- PROJECT LOGO --\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/exogee-technology/graphweaver\"\u003e\n    \u003cimg src=\"https://graphweaver.com/docs/_next/image?url=https%3A%2F%2Fassets.super.so%2F34623db9-2df1-4511-9266-443aac2d1de3%2Fimages%2F2da1f00d-6bca-4881-8a8c-a3b589f8a191%2FScreenshot_2023-05-11_at_4.12.28_pm.png\u0026w=1920\u0026q=80\" alt=\"Project Logo\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- PROJECT TITLE --\u003e\n\u003ch1 align=\"center\"\u003eGraphweaver\u003c/h1\u003e\n\n\u003c!-- PROJECT DESCRIPTION --\u003e\n\u003cp align=\"center\"\u003e\n  The code-first, MAXIMALLY CUSTOMISABLE open source alternative to Hasura that is easy to self host. \n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Graphweaver speeds up your GraphQL development by securely connecting all your data sources in one place. Once your API has been bootstrapped, you can add permissions / auth and completely customise every operation in your server. We offer in-built resolvers for all common data access scenarios, but give you full flexibility to override them however you like! You also get an admin area that you can customise so that you don't have to build a back office system ever again.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://demo.graphweaver.com\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\n    🚀 Try the Demo 🚀\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- PROJECT STATUS --\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/exogee-technology/graphweaver\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/status-active-brightgreen.svg\" alt=\"Project Status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/exogee-technology/graphweaver/issues\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/exogee-technology/graphweaver\" alt=\"GitHub Issues\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/exogee-technology/graphweaver/pulls\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues-pr/exogee-technology/graphweaver\" alt=\"Pull Requests\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg\" alt=\"License: MIT\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\n## Table of Contents\n\n- [Table of Contents](#table-of-contents)\n- [Why](#why)\n- [Features](#features)\n- [Security](#security)\n- [Documentation](#documentation)\n- [Quick Start](#quick-start)\n  - [Next Steps](#next-steps)\n- [Contributing](#contributing)\n- [License](#license)\n\n\u003c!-- WHY --\u003e\n\n## Why\n\nWe consistently find that everyone has lots of sources of truth. You know, CRM holding customer data, accounting systems handling invoices, and more scattered across different SaaS platforms and databases? It's a real pain to sync it all up!\n\nIn the past we used to copy data from everywhere to the DB, but that always breaks at some point.\n\nWell, after years of grappling with this issue, we wanted a way to easily build a single GraphQL API in front of all those sources. An API that allows you to execute queries that even span across datasources (give me DB records where customer in CRM name is \"Bob\"), and also allows you to administer your data all from one place.\n\nOther tools are oriented around the schema file. This is great until you actually need to go to production. Need to override that one operation? Change exactly how your auth tokens are handled? With Graphweaver you're never constrained because it's all just a standard GraphQL server which you can tweak the behaviour of however you like.\n\nThat's why we built Graphweaver. Start quickly, use the default for most things, change whatever you like, self-host, and never lose control.\n\n## Features\n\n- **Instant GraphQL API -** Instant CRUD API from any data source\n- **Granular Permissions -** Row and column-level security\n- **Multiple Data Sources -** Combine multiple data sources (Postgres, Mysql, SQLite, Saas Platforms, REST)\n- **Cross Source Filters -** Graphweaver allows you to filter across data sources, from one database by another\n- **100% Open Source - A**vailable on GitHub under the MIT license, so you are free to change and deploy as needed.\n- **Admin Panel -** Out of the box Admin UI to view and manipulate data\n- **Code First -** Maximum flexibility for you to write your own resolvers and UI\n- **Code Generator -** Introspect a database and instantly create the Typescript resolvers\n\n## Security\n\nGraphweaver comes pre-built with the following security features:\n\n- **Role Based Access Control -** Define permissions and access rights at a role level and assign those roles to users.\n- **Access Control Lists-** Define and apply permissions based on user roles and assign them to Create, Read, Update, and Delete operations.\n- **Row Level Security -** Implement row-level security and define who has access to which rows in the data source.\n- **Column Level Security -** Fine-grained control over which fields and columns a user can access and modify.\n- **Identity Providers -** Pre-built identity providers for Local Database and Amazon Cognito.\n\nFor more on security see the [security documentation](https://graphweaver.com/docs/security).\n\n\u003c!-- DOCUMENTATION --\u003e\n\n## Ask AI\n\n[Graphweaver AI](https://codeparrot.ai/oracle?owner=exogee-technology\u0026repo=graphweaver) will help you understand this repository better. You can ask for code examples, an installation guide, debugging help and much more.\n\n## Documentation\n\nComprehensive documentation and usage examples can be found on our [Docs Site](https://graphweaver.com/docs). It covers installation instructions, detailed API documentation, security implementation and guides to help you get started with Graphweaver.\n\n\u003c!-- QUICK START --\u003e\n\n## Quick Start\n\nhttps://github.com/exogee-technology/graphweaver/assets/81122022/3c4eb47e-84ff-476c-998f-936994e8064b\n\nBefore we start the installer make sure you are running:\n\n- Node `\u003e22.*`\n- PNPM `\u003e9.*`\n\nWith those two installed you can create a new project with the **Graphweaver CLI**, by running:\n\n`pnpx graphweaver@latest init`\n\nThe prompts will ask you which backends to install for this app.\n\nFirst you will be asked to name the project:\n\n```\n? What would your like to call your new project?\ntest-project\n```\n\nNext, you will be asked to choose your data source. Select your data source and press enter.\n\n```\n? Which Graphweaver backends will you need?\n◯ MikroORM - PostgreSQL Backend\n◯ MikroORM - MySQL Backend\n◯ REST Backend\n```\n\nFinally, you are asked to confirm that the project is going to be created.\n\n```\n? OK, we're ready- I'm going to create a new app in \"/Users/test-project\" - is that OK?\nYes\n\nAll Done!\n\nMake sure you npm install / yarn install / pnpm install, then run the start script to get started\n❯\n```\n\nOnce the new app has been created `cd test-project`. Then run `pnpm install` to install all the required dependencies.\n\nOnce installed, you can start the development server by running `pnpm start`.\n\nThis will launch the Graphweaver server and Admin UI at http://localhost:9000:\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/exogee-technology/graphweaver\"\u003e\n    \u003cimg src=\"https://graphweaver.com/docs/_next/image?url=https%3A%2F%2Fassets.super.so%2F34623db9-2df1-4511-9266-443aac2d1de3%2Fimages%2Fc5b8b2bc-a8c5-4851-8e99-bca52c5f3fec%2FScreenshot_2023-07-25_at_10.57.37_am.png\u0026w=1920\u0026q=80\" alt=\"Project Logo\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nVery empty! We need to fill the API with data! To do that, we need to connect to a data source and create some entities.\n\n### Next Steps\n\nThere are two options to connect a data source:\n\n1. If you have an existing database (Postgres, MySql or Sqlite) then go to the [Importing a Database](https://graphweaver.com/docs/importing-a-database) page. This will guide you through importing your database.\n1. If you have a data source but it is currently empty then go to [How to Connect a Data Source](https://graphweaver.com/docs/connect-to-a-data-source) page.\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nWe welcome contributions from the community! If you're interested in improving Graphweaver, please refer to our Contribution Guidelines for detailed instructions.\n\nWe use [Gitleaks](https://github.com/gitleaks/gitleaks) to ensure that secrets remain secret:\n\n- `brew install gitleaks`\n- `brew install pre-commit`\n- `pre-commit autoupdate`\n\n## Publishing\n\nFollow these steps to release new packages:\n\n## 1. Create a new Branch:\n\nBegin by creating a new branch. Base it on the latest main branch.\n\n## 2. Update Package Versions:\n\nEvaluate changes and adhere to Semantic Versioning (semver). Run the relevant command for `major`, `minor` or `patch` changes.\n\n```bash\n$ pnpm version:bump patch\n```\n\nTo release a beta build run:\n\n`pnpm version:bump 1.0.0-beta.2`\n\n## 3. Update Package References:\n\nNow the versions are bumped, but packages that depend on each other are still referencing the old version. Run this command\nto update all the references across the monorepo.\n\n```bash\n$ pnpm relink:deps\n```\n\n## 4. Commit and Pull Request:\n\nCommit the changes. Create a pull request targeting the main branch.\n\n## 5. Review and Merge:\n\nAwait PR approval, then merge it into main to integrate new versions.\n\n## 6. Create a Release:\n\nAfter merging, click on Tags -\u003e Releases -\u003e 'Draft a new release' or visit https://github.com/exogee-technology/graphweaver/releases/new. Choose a new tag for the release, then fill in the description. Populate New Features and tidy up the list of PRs, hit Publish release\n\n## 7. Publish to NPM:\n\nTrigger the \"Publish to NPM\" workflow in the Actions tab.\n\n## 8. Verify and Monitor:\n\nMonitor the workflow progress in GitHub Actions. Confirm successful publication in the npm registry.\n\nYou're done!\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the Apache 2.0 License. See LICENSE for more information.\n\n\u003c!-- FOOTER --\u003e\n\u003cp align=\"center\"\u003e\n  Made with ❤️ by \u003ca href=\"https://exogee.com\"\u003eExogee\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexogee-technology%2Fgraphweaver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexogee-technology%2Fgraphweaver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexogee-technology%2Fgraphweaver/lists"}