Today we are launching Mooncamp on Product Hunt! Mooncamp is built on top of Dgraph, which was the best technology decision we could have ever made! I am happy to answer any question you might have, on how we built Mooncamp with Dgraph!
Also, if you want to try Mooncamp or give us an upvote, that would be awesome!
Hi @AugustDev, thanks. Great that you like Mooncamp
We are not using GraphQL, but DQL + our own implementations for a lot of Dgraph’s GraphQL features (such as access management). This allows us to still fire DQL directly from the frontend. Reason is, that we started building Mooncamp when GraphQL wasn’t available yet. However, we chose to stick with DQL, because we love the extensions Dgraph added to the GraphQL standard (such as ‘var’ blocks).
Thanks for sharing @Joschka, very impressive work!
We’re also planning to roll with DQL (for an educational website) and it’s interesting to see your approach!
Few questions if I may …
our own implementations for a lot of Dgraph’s GraphQL features (such as access management). This allows us to still fire DQL directly from the frontend
Did you do any load/concurrency testing of using DQL directly from the frontend? We’re a little uncertain of the limitations here in terms of “open connections” when not working with gRPC. I assume you’re using the the HTTP or do you have some middleware? Could you unpack a little bit more about “your own implementations”?
such as ‘var’ blocks
Could you share any implementation details around this nice filter? Does it employ those ‘vars’ a lot? Any lessons learned when building complex filter would be much appreciated. Also, did you ever build a filter that targets more deeply nested attribute (multiple hops down) like Owner.Country.Name?
Do you mean trigger DQL from the frontend, because given that DQL is not constrained by auth (it’s basically SQL for Dgraph) I can’t think how sending DQL statements from a public client (like a website) could be secure.
@Daniel I read your post and want to answer asap. It’s on my todo.
@BenW true, that wouldn’t be feasible, or secure. We have our own access management implementation that acts as a proxy between the client and Dgraph. However the client is essentially free to query whatever (meaning all DQL features are available)