Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/absinthe-graphql/absinthe
The GraphQL toolkit for Elixir
https://github.com/absinthe-graphql/absinthe
absinthe api apollo-client elixir graphql relay services
Last synced: 7 days ago
JSON representation
The GraphQL toolkit for Elixir
- Host: GitHub
- URL: https://github.com/absinthe-graphql/absinthe
- Owner: absinthe-graphql
- License: other
- Created: 2015-10-17T01:56:28.000Z (about 9 years ago)
- Default Branch: main
- Last Pushed: 2024-05-10T13:05:30.000Z (6 months ago)
- Last Synced: 2024-05-21T01:08:35.917Z (6 months ago)
- Topics: absinthe, api, apollo-client, elixir, graphql, relay, services
- Language: Elixir
- Homepage: http://absinthe-graphql.org
- Size: 4.05 MB
- Stars: 4,226
- Watchers: 79
- Forks: 518
- Open Issues: 63
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-graphql - absinthe-graphql - Fully Featured Elixir GraphQL Library. (Libraries / Elixir Libraries)
- freaking_awesome_elixir - Elixir - Fully featured GraphQL library. (Top 20 packages)
- fucking-awesome-elixir - Absinthe Graphql - Fully featured GraphQL library. (Domain-specific language)
- awesome-list - absinthe - graphql | 3704 | (Elixir)
- awesome-graphql - absinthe-graphql - Fully Featured Elixir GraphQL Library. (Libraries / Elixir Libraries)
- awesome-elixir - Absinthe Graphql - Fully featured GraphQL library. (Domain-specific language)
README
# Absinthe
[![Build Status](https://github.com/absinthe-graphql/absinthe/workflows/CI/badge.svg)](https://github.com/absinthe-graphql/absinthe/actions?query=workflow%3ACI)
[![Version](https://img.shields.io/hexpm/v/absinthe.svg)](https://hex.pm/packages/absinthe)
[![Hex Docs](https://img.shields.io/badge/hex-docs-lightgreen.svg)](https://hexdocs.pm/absinthe/)
[![Download](https://img.shields.io/hexpm/dt/absinthe.svg)](https://hex.pm/packages/absinthe)
[![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![Last Updated](https://img.shields.io/github/last-commit/absinthe-graphql/absinthe.svg)](https://github.com/absinthe-graphql/absinthe/commits/main)[GraphQL](https://graphql.org) implementation for Elixir.
Goals:
- Complete implementation of the [GraphQL Working Draft](https://spec.graphql.org/draft/).
- An idiomatic, readable, and comfortable API for Elixir developers
- Extensibility based on small parts that do one thing well.
- Detailed error messages and documentation.
- A focus on robustness and production-level performance.Please see the website at [https://absinthe-graphql.org](https://absinthe-graphql.org).
## Why Use Absinthe?
Absinthe goes far beyond GraphQL specification basics.
### Easy-to-Read, Fast-to-Run Schemas
Absinthe schemas are defined using easy-to-read macros that build and verify
their structure at compile-time, preventing runtime errors and increasing
performance.### Pluggability
The entire query processing pipeline is configurable. Add, swap out, or remove
the parser, individual validations, or resolution logic at will, even on a
per-document basis.### Advanced Resolution
Absinthe includes a number of advanced resolution features, to include:
- Asynchronous field resolution
- Batched field resolution (addressing N+1 query problems)
- A resolution plugin system supporting further extensibility### Safety
- Complexity analysis and configurable limiting
- Support for precompiled documents/preventing custom documents### Idiomatic Documents, Idiomatic Code
Write your schemas in idiomatic Elixir `snake_case` notation. Absinthe can
transparently translate to `camelCase` notation for your API clients.Or, define your own translation schema by writing a simple adapter.
### Frontend Support
We care about support for third-party frameworks, both on the back and
front end.So far, we include specialized support for Phoenix and Plug on the backend,
and [Relay](https://relay.dev/) on the frontend.Of course we work out of the box with other frontend frameworks and GraphQL
clients, too.## Installation
Install from [Hex.pm](https://hex.pm/packages/absinthe):
```elixir
def deps do
[{:absinthe, "~> 1.7.0"}]
end
```Note: Absinthe requires Elixir 1.10 or higher.
## Upgrading
See [CHANGELOG](./CHANGELOG.md) for upgrade steps between versions.
## Documentation
- [Absinthe hexdocs](https://hexdocs.pm/absinthe).
- For the tutorial, guides, and general information about Absinthe-related
projects, see [https://absinthe-graphql.org](https://absinthe-graphql.org).### Mix Tasks
Absinthe includes a number of useful Mix tasks for extracting schema metadata.
Run `mix help` in your project and look for tasks starting with `absinthe`.
## Related Projects
See the [GitHub organization](https://github.com/absinthe-graphql).
## Community
The project is under constant improvement by a growing list of
contributors, and your feedback is important. Please join us in Slack
(`#absinthe-graphql` under the Elixir Slack account) or the Elixir Forum
(tagged `absinthe`).Please remember that all interactions in our official spaces follow
our [Code of Conduct](./CODE_OF_CONDUCT.md).## Contribution
Please follow [contribution guide](./CONTRIBUTING.md).
## License
See [LICENSE.md](./LICENSE.md).