https://github.com/Graphcool/graphcool-framework
https://github.com/Graphcool/graphcool-framework
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/Graphcool/graphcool-framework
- Owner: Graphcool
- License: apache-2.0
- Archived: true
- Created: 2018-01-16T11:58:16.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-09-04T16:57:58.000Z (over 4 years ago)
- Last Synced: 2024-09-01T14:02:49.407Z (8 months ago)
- Language: Scala
- Size: 11.8 MB
- Stars: 1,772
- Watchers: 34
- Forks: 131
- Open Issues: 533
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-starred - Graphcool/graphcool-framework - (others)
README
[Website](https://www.graph.cool/) • [Docs](https://graph.cool/docs/) • [Blog](https://blog.graph.cool/) • [Forum](https://www.graph.cool/forum) • [Slack](https://slack.graph.cool/) • [Twitter](https://twitter.com/graphcool)
[](https://circleci.com/gh/graphcool/graphcool-framework) [](https://slack.graph.cool) [](https://badge.fury.io/js/graphcool)
**Graphcool is an open-source backend development framework** to develop and deploy GraphQL APIs.
> To learn more about building scalable and production-ready GraphQL servers, be sure to check out [Prisma](https://www.prisma.io/with-graphql).
## Architecture
Graphcool is a new kind of framework that introduces clear boundaries between your business logic and stateful components. This separation allows the framework to take advantage of modern cloud infrastructure to scale the stateful components without restricting your choice of programming language and development workflow.

## GraphQL Database
The most important component in the Graphcool Framework is the GraphQL Database:
* Query, mutate & stream data via GraphQL CRUD API
* Define and evolve your data model using GraphQL SDLIf you have used the Graphcool Backend as a Service before, you are already familiar with the benefits of the GraphQL Database.
The CRUD API comes out of the box with advanced features such as pagination, expressive filters and nested mutations. These features are implemented within an efficient data-loader engine, to ensure the best possible performance.
## Deployment
Graphcool services can be deployed with [Docker](https://docker.com/) or the [Graphcool Cloud](http://graph.cool/cloud).
### Docker
You can deploy a Graphcool service to a local environment using Docker. To run a graphcool service locally, use the `graphcool local` sub commands.
This is what a typical workflow looks like:
```sh
graphcool init # bootstrap new Graphcool service
graphcool local up # start local cluster
graphcool deploy # deploy to local cluster
```### Graphcool Cloud (Backend-as-a-Service)
Services can also be deployed to _shared_ clusters in the Graphcool Cloud. When deploying to a shared cluster, there is a **free developer plan** as well as a convenient and efficient **pay-as-you-go pricing** model for production applications.
The Graphcool Cloud currently supports three [regions](https://blog.graph.cool/new-regions-and-improved-performance-7bbc0a35c880):
* `eu-west-1` (EU, Ireland)
* `ap-northeast-1` (Asia Pacific, Tokyo)
* `us-west-1` (US, Oregon)## FAQ
### What's the relation between Graphcool and Prisma?
Think of [Prisma](https://www.prisma.io) as the query engine that used to power the Graphcool Framework. Prisma is available to the developer community as a standalone tool to simplify the implementation of GraphQL servers and other applications.
You can read more about the differences between Prisma and the Graphcool Framework [here](https://www.prisma.io/forum/t/graphcool-framework-and-prisma/2237) and [here](https://www.prisma.io/forum/t/what-are-the-edge-cases-that-make-prisma-necessary/2857/8).
### Why is Graphcool Core written in Scala?
At the core of the Graphcool Framework is the GraphQL Database, an extremely complex piece of software. We developed the initial prototype with Node but soon realized that it wasn't the right choice for the complexity Graphcool needed to deal with.
We found that to be able to develop safely while iterating quickly, we needed a powerful type system. Scala's support for functional programming techniques coupled with the strong performance of the JVM made it the obvious choice for Graphcool.
Another important consideration is that the most mature GraphQL implementation - [Sangria](https://github.com/sangria-graphql) - is written in Scala.
### Is the API Gateway layer needed?
The API gateway is an _optional_ layer for your API, adding it to your service is not required. It is however an extremely powerful tool suited for many real-world use cases, for example:
* Tailor your GraphQL schema and expose custom operations (based on the underlying CRUD API)
* Intercept HTTP requests before they reach the CRUD API; adjust the HTTP response before it's returned
* Implement persisted queries
* Integrate existing systems into your service's GraphQL API
* File managementAlso realize that when you're not using an API gateway, _your service endpoint allows everyone to view all the operations of your CRUD API_. The entire data model can be deduced from the exposed CRUD operations.
## Community
Graphcool has a community of thousands of amazing developers and contributors. Welcome, please join us! 👋
* [Forum](https://www.graph.cool/forum)
* [Slack](https://slack.graph.cool/)
* [Stackoverflow](https://stackoverflow.com/questions/tagged/graphcool)
* [Twitter](https://twitter.com/graphcool)
* [Facebook](https://www.facebook.com/GraphcoolHQ)
* [Meetup](https://www.meetup.com/graphql-berlin)
* [Email]([email protected])## Contributing
Your feedback is **very helpful**, please share your opinion and thoughts!
### +1 an issue
If an existing feature request or bug report is very important for you, please go ahead and :+1: it or leave a comment. We're always open to reprioritize our roadmap to make sure you're having the best possible DX.
### Requesting a new feature
We love your ideas for new features. If you're missing a certain feature, please feel free to [request a new feature here](https://github.com/graphcool/framework/issues/new). (Please make sure to check first if somebody else already requested it.)