Show HN: WunderGraph – open-source API Developer Toolkit
More than two years ago, Jens started WunderGraph as a Side Project. The initial idea was to solve the problem of integrating multiple disparate DataSources into a single, unified API Layer. While solving this problem, Jens realized that his mental model of APIs was wrong. Most API tools treat APIs as abstract things or just endpoints, in a very imperative way. At some point, he realized that there's a better model to think about APIs: APIs are dependencies and we should treat them in a declarative way!
And that's how the idea of the "Package Manager for APIs"[1] came to be: WunderGraph is an API Developer toolkit which allows you to import and export APIs, just like npm packages. This is possible because every WunderGraph project generates a static, conflict-free and versionable artifact.
It shouldn't take days to add a new 3rd party API to your API layer, with WunderGraph, this is possible in seconds.
WunderGraph lets you define your API dependencies in a declarative way. The whole "Graph" of API dependencies is represented as an unified GraphQL Schema. Meta-data like API credentials, can be configured with our TypeScript SDK. API Operations are defined as regular GraphQL Operations. Custom middleware / business logic can be written using TypeScript.
Finally, WunderGraph generates a Gateway + Client(s). Gateway and clients communicate via JSON-RPC. We call this approach "Compile-time" GraphQL queries. The client is 100% TypeSafe. The Gateway handles Authentication, Authorization, Caching, Middleware, etc...
WunderGraph gives you the Developer Experience of working with a single, monolithic API layer, although you're using many different internal and external Services and Databases behind the scenes.
WunderGraph Supports any OpenID Connect compliant IDP for Authentication, S3 for file storage, REST (OpenAPI), GraphQL & Apollo Federation for APIs and PostgreSQL, MySQL, SQLite, SQLServer, Planetscale and MongoDB for the data-layer.
Today, we're happy to announce that WunderGraph is finally Open Source! Check out the Monorepo[2] on GitHub. If you like our ambitions, give us a star! You can run WunderGraph locally and air-gapped, no strings attached.
There's also a more extensive release post on our blog[3]. Have a look at the examples[4], we're keen to hear your opinion!
[1]: https://hub.wundergraph.com/start
[2]: https://github.com/wundergraph/wundergraph
[3]: https://wundergraph.com/blog/wundergraph_the_next_generation...
[4]: https://github.com/wundergraph/wundergraph#getting-started
36 comments
[ 4.4 ms ] story [ 108 ms ] threadI've been exploring Wundergraph as an alternative to another service I'm using and I have to say that it looks quite promising.
Coming from a FrontEnd background, Wundergraph really simplify things for me, not only by providing me with a client that is 100% TypeSafe but by centralizing my APIs and the way I integrate them in my project, it's really neat.
I find Wundergraph to have the best of both worlds, it gives you tools you need to handle authentication/authorization, file storage but it also give you all the flexibility you need to do things your way.
I'm really excited with Wundergraph and how it could help me with the project I'm working on.
LFG
WunderGraph also has an interesting take on GraphQL subscriptions, as described here: https://wundergraph.com/blog/deprecate_graphql_subscriptions...
At a glance WunderGraph and Hasura seem to be solving some of the same problems - i.e. aggregating external GraphQL & REST APIs, generating an API for you over your own database...
BUT - WunderGraph generates your own custom SDK (fully typesafe) for use in your frontend code. This super tight coupling makes for a really great developer experience. Hasura is less opinionated in that way, you can use any GraphQL client library and codegen/introspection tooling - but you have to wire it all together yourself. The Hasura console UI also feels frustrating to use at times (e.g. bulk editing permissions), and testing your schema programatically is cumbersome.
You can do advanced RBAC with WunderGraph, writing queries/mutations ("operations") for each role, and custom logic is possible via hooks that you can write in typescript.
It all just feels very well thought out and extensible. As an agency you want to use consistent tooling across different client projects to minimise technical debt and maintenance effort, but that tooling also has to be super flexible to deal with different client requirements. It's early days for us with WunderGraph but the maintainers are very approachable and it is already feeling like a safe 'bet' to me
Can't wait to see where they take this - if their blog (https://wundergraph.com/blog) is any indication, they will continue to add innovation in this space. You can tell Jens has put a massive amount of thought into what GraphQL is best used for and what the DX should be.
For the rest of the HN/YC community, give a try to Wundergraph --> https://wundergraph.com
A package manager for APIs is the way to go.
You are welcome to join the launch party and join the awesome community we have here! https://discord.gg/cnRWwHXbQm
https://news.ycombinator.com/newsguidelines.html
https://news.ycombinator.com/newsfaq.html
It would be good to call off your friends/fans/teammates because HN readers have a nose for such comments and consider them astroturfing or spam. The community is pretty adamant about only wanting organic discussion here, and voting rings are particularly not allowed.
Looks like our fans got a little too excited. Our apologies. Will not happen again.
We apologize for breaking community guidelines. Thank you for keeping HackerNews awesome!
Best, Stefan
This also uses the awesome graphql-go-tools (https://github.com/wundergraph/graphql-go-tools) under the hood which is way more performant than other JavaScript GraphQL implementations.
Two major changes have pushed this framework into a really mature place. One was a recent rewrite around custom resolvers, which allows for adding business logic in between GraphQL calls. The other is going fully open source.
Despite some initial challenges with the framework, I can't deny that Jens understands the problem domain probably better than anyone else in the world. Glad to see so many issues like authentication and API interconnectivity solved in a production ready way. I'm getting out of the box functionality that I used to depend on entire teams for. The depth of auth implementation, from one line config of Auth0 all the way down to per-operation RBAC is the shining example of how well this framework is architected.
Can't wait to see the continued development and growth from their team!
Absolutely thrilled to see the big day has finally come, congrats to all of you at WG for tackling a very difficult problem with diligence and discipline. It's hard to keep your eye on the problem that needs to be solved when working on an ambitious projects and that's exactly what you guys have done, congrats! Also Jens is one the most brilliant, productive, and humble people I've met . I can't wait to watch the community grow and contribute in a new way now that it is open source!
Best of luck too all of you!
Congratulations
I've been using wundergraph for last couple of months in some hobby projects and also using it on my startup. It boost my team's productivity and API development process easy to easier. In the beginning, I had some doubts and problems on some places, but the community and wundergraph team! They helped me instantly. And overall experience is really impressive.
Wundergraph has become a part of our tech stack, and we wish the Jens and the full team, Best of luck. Will definitely use wundergraph in our future projects too.