Benzene is a new take on GraphQL server that gives us the control we need while staying blazing fast.
@benzene/ws packages allow us to build a full-featured GraphQL server, featuring:
- Super minimal (~4kB) and performant.
@benzene/core, which includes minimal dependencies and features no third-party integrations, thus avoiding unnecessary overheads.
- Customizable runtime. Use custom GraphQL implementation such as
graphql-jitor rolling our own for performance and cutting-edge features.
- Unopinionated and observable APIs. Benzene does not include any middleware or configurations, so we can be in total control of logging, parsing, and error handling.
- Unified pipeline. Write error handling or context creation function only once. Every transport handler inherits the same Benzene instance and takes advantage of its shared configuration.
- Fully extensible. Despite not being battery-included, it can be extended with recipes (like Persisted queries) or @benzene/extra.
We are taking an approach opposite to Apollo Server, which abstracts everything behind its
applyMiddleware function that includes unexpected and hard-to-customized "defaults".
While our approach requires a bit more boilerplate, we achieve an observable and customizable server integration.
Documentation is available at benzene.vercel.app
There is also a Getting Started section
which shows how to build a real-time book voting app using both
There are also various examples for integrations with different tools and frameworks.