With the number of services rising and the frontend application needing to do dozens of gRPC calls per page, we decided to tackle the challenge of designing an API gateway solution for gRPC.
As with everything gRPC this is very much uncharted territory. While we are still a young startup we keep on taking these challenges because of all the benefits gRPC gives us in building our application.
I work in a startup which is ~10 months old where we've decided to go all in on gRPC for all communications, both inter-service and client (Web SPA and a CLI) to service.
Although investment in tooling had been significant in the beginning it has truly paid off its dividends now as we can develop in Golang (micro services, CLI), Javascript (SPA) and Python (end to end testing framework), and have a single definition for all our API endpoints and messages in the form of Protobufs. These protobufs automatically generate all client and server code and give us out-of-the-box backward and forward compatibility, increased performance due to binary format over the wire and more..
"About 2 months ago I started working at StackPulse. When I joined there was not a single line of code written yet. We’ve had to decide on many different things. One of those things was choosing a “protocol” for communication both between our micro services and externally".
At my workplace we use gRPC for inter service and client service communication from a VueJS SPA. It took some effort but is working really great right now. A colleague wrote a blog post (actually entire series) about it:
https://stackpulse.com/blog/tech-blog/grpc-web-using-grpc-in...
You can enable reflection API (but must compile your server with it) - e.g. it exposes some well known end-point, which when asked can return you back the other end-points available (services), and then asking each end-point service can return each method - and then for each method - what it takes (assuming as "proto") and returns, also what kind is (one shot, bidi, etc.)
So not the same as GraphQL, as you are not asking about resources/objects, but rather inspecting what can be called and how.
I have not used GraphQL in practice so I can't directly compare them.
What I can say is that in terms of flexibility, protobufs by nature provide us with forward and backward compatibility. We can easily add new fields and eventually deprecate old ones, evolving the API similarly to GraphQL.
Apparently, gRPC also has some introspection capabilities like GraphQL (since again you have a clear protobuf schema) but I have never used them in my clients, and perhaps they are not as baked into the system as in GraphQL.
The project was mostly about creating an end-to-end web app,
so right now we have no intentions providing a SQLite interface.
That being said, the recipes API which the frontend client consumes is open and allows you to query our ElasticSearch cluster. You can have a look at the API in the repo (We will be adding some documentation today or tomorrow) and of course we are open for pull requests if you wish to implement such an interface..
As a part of a web development workshop in University we've created Recipeify - a recipe index with over 160K recipes from all over the web. Recipeify provides powerful search capabilities and filtration based on you desired ingredients, cuisines and dietary restrictions.
If you choose to login you can set dietary restrictions or forbidden ingredients to be applied on all your searches and save your favorite recipes to your cookbook. We also employ a recommendation engine that will provide you with recommendations based on your saved and viewed recipes and a general "explore" type experience full with suggestions for recipes based on seasonality and upcoming holidays.
The entire project is open source and all the code used from backend, frontend, to the scraper we've used is available on https://github.com/recipeify/Recipes.
We know that the design could be approve and would appreciate any suggestion or comment, here, through our support tickets or straight on our Github repo.
We hope you will enjoy and get some value from using Recipeify , we had a lot of fun creating it :)
When you say too many features, do you mean filter fields?
And yes, I know that the mobile experience right now is far from perfect. The app was developed primarily with desktop/laptop users in mind (so I encourage you to test it from a larger display) but we are gonna provide better mobile support in the near future, as you can see in our repo.
This course can be audited for free (after you pass the 200$ certificate track bait) and I think it's a one of a kind opportunity.
I am familiar with the course's syllabus and can attest to the high quality of the lectures and practical assignments. You can of course acquire this knowledge yourself from numerous sources in the web but for those who wish a little more guidance and a more structured curriculum, Avishai and Dan are world class security experts (BlackHat publications, AlgoSec, ex-IDF).
I am not affiliated with the course or the instructors and honestly think this is a terrific resource offered here for free.
The original premise of ClimaCell as I understood when hearing about a few years ago was to utilize cellular cells (hence ClimaCell) to acquire information about the levels of humidity in the air, thus providing a cellular cell level immediate forecast. I believe they have expanded that to satellite communications and more.
There is an enormous amount of latent weather data to be extracted from existing sources and they, I think, are doing a great job finding and using them.
I'm shocked there aren't more efforts in this space. I know IBM is using barometers in phones now, and I suppose Apple may try that post-Dark Sky acquisition, but I'm still surprised there aren't more!
Although AWS Braket is just in preview it's pretty safe to say it is a Quantum Computer as a Service bundled with a framework to write you algorithm in (a la IBM Q and qiskit).
The nice thing about it is that you have a choice between three hardware vendor, all featuring different architectures giving the ability to test superconducting, ion trap and annealing systems from the same place.
I have no affiliation with this other than being a Physics/CS graduate with only one Quantum Computing course under my belt.