News for hackers. Stuff that matters.
Re:Show HN: Pbkit – Protobuf toolkit written in Deno/TypeScript by disjukr on Monday April 04, 2022 @01:55AM (#30903677)
Our company uses gRPC/Protobuf intensively.

I'm a web front-end engineer, and one day my boss informed the client engineers that the API provided by the back-end would be in the form of gRPC only.

To use the gRPC/Protobuf stack in the web frontend, there were two options: protoc and Protobuf.js. Protoc generated JavaScript code old-schooled and required native dependencies, and Protobuf.js was problematic for us at our scale.

And we are a company that makes mobile apps that use webviews a lot. When webviews communicate with natives, they communicate using the interface defined by the protobuf service schema. The service code generated by the existing protobuf tooling is tightly coupled with gRPC, and it was necessary to make this part into a structure that can be easily replaced.

So we started making our own protobuf compiler, and while building the compiler, we also made a package manager, VSCode extension, and Chrome Devtools.

As far as I know, there is no tool that properly supports functions like Go to Definiton in VSCode extension. We have implemented this function properly, and we plan to implement other functions using our language server such as autocomplete someday.

Now we've stripped out all of the Protobuf.js code, which was a big part of our biggest product, and rewritten it with Pbkit.

Re:Show HN: Pbkit – Protobuf toolkit written in Deno/TypeScript by mhoad on Tuesday April 05, 2022 @06:49AM (#30917401)
There is another pretty good solution for this that will allow your front end to stick with JSON and keep your backend as gRPC only which is to stick envoy in front of the gRPC services and use a filter to translate between the two which is what you are already doing except you are doing gRPC-web to gRPC right now since gRPC in the browser isn’t currently possible but that should be changing hopefully before too long with technologies like WebTransport (https://web.dev/webtransport/).

I’m only familiar with Google’s cloud stack but they have basically managed versions of this already in the form of their Cloud Endpoints and API Gateway products that will handle all of this for you out of the box. I can’t speak to AWS or others but like I said at the end of the day it’s really just an Envoy filter doing the heavy lifting.

But in short you can 100% write gRPC only backends but still expose a JSON / REST API and nobody has to know anything to do with gRPC and you can just wait for the browser technologies to catch up in the meantime and make the transition when you’re ready.