We are preparing a blog post and would like to get a feel for who is currently using gqlgen?
Might as well go first; 99designs has been running gqlgen for several months now.
not yet in production... 😿
Using with the flutter graphql client.
Not in production yet but getting there
On Tue, 7 Aug 2018, 10:03 Masahiro Wakame, notifications@github.com wrote:
not yet in production... 😿
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/99designs/gqlgen/issues/268#issuecomment-410970304,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATuCwjUrr_SkuWxPxz-xCYub7976wJMGks5uOUm_gaJpZM4Vxbuv
.
Soon ~10 days
Running in production with one internal application for about 3 months now. User base 10-15.
Render is using it for everything in production and internal tooling. We love it.
Is anyone using the subscriptions in production?
We are close to deploying at least 3-4 of our core services at Sky Bet using gqlgen.
We are using for our news app newsdigest's backend API for two months!
For our use case, performance is very very very important, and gqlgen is awesome for that. :) I compared with other GraphQL libraries and choosed it.
@yamitzky how big is the performance jump in this versus gophers (a guesstimate is gucci). I know that the other libraries aren't that performant.
Neighborly is starting to move one of our production applications to gqlgen
After testing out gqglen and some other libraries we will use it in one of the next projects.
I use gqlgen almost daily. It is the foundation of how we build our GraphQL implementations, of which there are many. We write medical practice-management and automation software. gqlgen is deployed in linux containers, Windows desktop and service applications, as well as on Raspberry Pis!
Thank you so much for an excellent package! It has helped lay the foundation for most of our software development today!
@rahulmadduluri : Is anyone using the subscriptions in production?
Yessir, we are! Our implementation is primitive, and our subscriptions are limited by it. Here's a simple example of some resolvers that might help you out. I haven't run this at all, but have copied some code from another project. No promises that it works as-is!
// Subscriptions stores active subscriptions. The index of the top-level map is either a Task ID, or the string "*". The second-level map stores an active subscription with a unique ID.
var Subscriptions = map[string]map[string]chan *models.Task
const SUB_ALL = "*"
func (r subscriptionResolver) TaskCompleted(ctx context.Context, id *string) (*models.Task, error) {
subId := uuid.Must(uuid.NewV4()).String()
c := make(chan *models.Charge, 1)
if id == nil {
id = &SUB_ALL
}
go func() {
<-ctx.Done()
delete(subs[id], subId)
}()
if subs[id] == nil {
subs[id] = make(map[string]chan *models.Task, 0)
}
subs[id][subId] = c
return c, nil
}
func (r mutationResolver) CompleteTask(ctx context.Context, id string) (*models.Task, error) {
t := &models.Task{}
// persist your task
// Publish to filtered subscriptions
for _, c := range Subscriptions[id] {
c <- t
}
// Publish to non-filtered subscriptions
for _, c := range Subscriptions[SUB_ALL] {
c <- t
}
return t, nil
}
One thing we need to improve on is my eventing. With a proper event bus, subscription "filters" could be vastly more complex; not to mention all of the other benefits of an event-based system.
git-bug is not fully ready ready but does use gqlgen to bind the web UI with the backend.
I'm not a company, but I use it for the backend of my blog, writing.natwelch.com.
Anyone tested performances vs gophers-graphql library?
I think @lwc is working on some cross framework performance tests
We are using gqlgen quite heavily at https://github.com/skybet for multiple projects, we were quite early adopters and have seen this library go through many changes in the last year. Amazing to see 99designs adopting and actively developing it.
We are using graphql to enable backend teams to build out APIs and automatically generate administrative front-ends to configure them.
Everything works great, our current pain points are around dataloaders and performance as our dataset has grown substantially since we started. Complexity has helped things, we are now able to rate limit people sending us stupid requests...adding things like pagination etc is next on our list.
Intello is using gqlgen in almost all of our production services
We've been using it in production at https://bench.co for a couple months now, moving more and more functionality over. It's on the edge of our infra, running in Kubernetes and fronted with an AWS ELB, then resolvers are making REST calls to our backend services to fetch data. Right now we have about 50 of our models represented, and about 120 resolvers created. Really liking it so far, thanks for all the hard work, @vektah
Bindo Labs Limited used it for an open model CRM platform.
I work for Welyco(https://welyco.com), which is a startup company runs smart restaurants in Japan.
In our restaurants, customers can order foods and make payments with their smartphone.
Our restaurant system is fully GraphQL API powered by gqlgen.
Now it's under development, but we will release it within 2 months.
I'm using it at Digital Ocean for an internal hardware management system.
Are there any open source projects using it? The examples don't really help with more complex apis
@LennyPenny git-bug does
Hey there!
Just did an Exchange Rate API with gqlgen ✨
We started provides some page component by gqlgen ✨
https://techbookfest.org/
We at Banzai Cloud use gqlgen for the v2 API of our Cloud Info application and we love it.
We at Kyma use gqlgen as GraphQL API layer for Kubernetes resources. Kyma is an open-source project driven by SAP.
The component is called console-backend-service and the source code is located here: https://github.com/kyma-project/kyma/tree/master/components/console-backend-service
We use gqlgen in production at Vidsy and ❤️it, @vektah and team congrats on such a well thought-out and executed alternative to the other golang implementations. Currently only for our client facing platform that's not publicly accessible but big plans for the future!
Check out DLive. We have migrated from Apollo Server and been running gqlgen as our API server for a few months and it works perfectly. Thank you for the amazing project @vektah !
There are many much more impressive projects listed here, but I wanted to add Graal Literary Agency's website to the list. The backend implemented using gqlgen powers a frontend app Next.js and an admin panel built using React. Thank you so much for this wonderful piece of software -- it's been a joy to build and work with!
We are using it in production on few projects (although small ones). We also created library (still wip) which generates GraphQL with gqlgen resolvers using gorm which helps to create model services more easily. Checkout https://github.com/novacloudcz/graphql-orm if interested :)
The monitoring product from the Alethio suite of products, which is part of Consensys is build using gqlgen 🚀
Keep up the good work!
We're using it at Khan Academy.
I currently try to migrate our ~850 lines long schema from github.com/graphql-go/graphql to gqlgen which we use in production. Currently I'm positive that gqlgen will save me from writing a lot of boilerplate.
I will keep this post updated if I have some progress :)
Update
After some work I got from ~7.600 self written lines to ~1700 lines of code (which is ~22.3%).
All tests are green and were quiet easy to migrate with a simple wrapper function that works for both frameworks:
func DoRequest(req *GraphqlRequest) (map[string]interface{}, error)
If someone is interested in this wrapper, let me know. But it's straight forward to write.
Plus IMHO using a schema driven approach helps with keeping Required fields, default values and the schema it self more clean.
We at Barbra (https://barbra.io) use gqlgen + federation in production with 5+ Microservices. It's been a pleasure so far, thanks for this awesome project and keep up the good work.
@BitPhinix can I ask what typ of federation are you using?
@frederikhors we are using Apollo federation with the WIP implementation from @marwan-at-work (+ a gateway written in nodejs) and we haven't encountered any issues so far. Since it's merged in the latest master, we will switch to it in the next release.
@go1com is using gqlgen. Thank you for great tool.
Thumbtack is using gqlgen in production for many of our APIs that power our native and web apps and are in the process of moving over several others.
We @lunarway are using gqlgen for most of our backoffice solutions replacing OpenAPI and gRPC.
Soon in about 30 days. Still waiting for that Field directive info issue tho :D
We at globo.com use gqlgen on globoesporte.com
Hi, the https://github.com/i-love-flamingo/flamingo project uses gqlgen: https://github.com/i-love-flamingo/graphql
You can find some references build with Flamingo on https://flamingo.me
We will in two weeks. Thank you for your work!
Thanks to this awesome library for making GraphQL dev in golang a breeze. I'm currently using this in a web framework I'm working on that provides a smooth DX.
For documentation details and GIF demo, please refer to here. The web framework also provides auto-recompile upon changes for both HTTP server(gqlgen is built-in) and background job worker in debug mode.
We're using it at Postmates.
We're shortly about to put a GQLGen powered subscription server live at Wakelet.com. Will probably migrate more to it as experience of working with has been very good. Found subscriptions much easier to work with than in Apollo.
I'm aiming to open source my Server Sent Events transport, but I can't promise anything yet...
We have been using it at Palco MP3 APIs since 2018, dealing with an average of 200 req/s. 🤘
Thank you!
I use gqlgen for developing most of my backend services. It has become part of our foundational aspects in building unified APIs. We recently started using it at Neustar and excited to see many companies using in production.
We're using it at Warung Pintar since late 2019 and were quite happy with it. Thanks for the awesome work
we are researching to pick a go based graphql package for our opensource project.. and planning to use this. It would be good to know some great projects (including opensource ones) using this
@vektah It would be helpful if you can point me to blog having references to the adapters of 99designs/gqlgen. Thanks.
@rahulmadduluri : Is anyone using the subscriptions in production?
Yessir, we are! Our implementation is primitive, and our subscriptions are limited by it. Here's a simple example of some resolvers that might help you out. I haven't run this at all, but have copied some code from another project. No promises that it works as-is!
// Subscriptions stores active subscriptions. The index of the top-level map is either a Task ID, or the string "*". The second-level map stores an active subscription with a unique ID. var Subscriptions = map[string]map[string]chan *models.Task const SUB_ALL = "*" func (r subscriptionResolver) TaskCompleted(ctx context.Context, id *string) (*models.Task, error) { subId := uuid.Must(uuid.NewV4()).String() c := make(chan *models.Charge, 1) if id == nil { id = &SUB_ALL } go func() { <-ctx.Done() delete(subs[id], subId) }() if subs[id] == nil { subs[id] = make(map[string]chan *models.Task, 0) } subs[id][subId] = c return c, nil } func (r mutationResolver) CompleteTask(ctx context.Context, id string) (*models.Task, error) { t := &models.Task{} // persist your task // Publish to filtered subscriptions for _, c := range Subscriptions[id] { c <- t } // Publish to non-filtered subscriptions for _, c := range Subscriptions[SUB_ALL] { c <- t } return t, nil }One thing we need to improve on is my eventing. With a proper event bus, subscription "filters" could be vastly more complex; not to mention all of the other benefits of an event-based system.
Heya! Can I ask how you are implementing your server.go for this subscription? I just started to try gqlgen and haven't been able to get the websockets part to work, keep seeing errors in my graphql-playground. Would be very helpful if you could share a bit more! Thanks :)
We at Paack are using it in prod since ~6 months ago.
We have been using gqlgen in production at OneConcern for 2 years without issue.
Using subscriptions, and now adopting federation.
@fredbi thanks for sharing. May I ask how are You handling the federation with subscriptions? Are You using federated gateway only for Query/Mutations and keep connecting to gqlgen service directly for subscriptions?
@jakubknejzlik
thanks for sharing. May I ask how are You handling the federation with subscriptions? Are You using federated gateway only for Query/Mutations and keep connecting to gqlgen service directly for subscriptions?
Yes: client WS transport is routed directly to the WS backend. Regular queries and mutations are handled by the gateway
We've been using it on GoAlert for almost 2 years.
we have been using it at the knot for 6-8 months. we migrated to it from graphql-go because of its better feature set and ease of use. thank you!
Most helpful comment
I'm using it at Digital Ocean for an internal hardware management system.