Define a gRPC service in seconds
A .proto file is the contract for a gRPC API: it declares the service, its remote-procedure-call (RPC) methods, and the strongly-typed messages those methods exchange. This builder turns a few inputs — a package name, a service, some methods, and a resource shape — into a complete, valid proto3 file you can hand to protoc or buf to generate type-safe clients and servers.
How it works
The generator emits four blocks. First the header: syntax = "proto3", your package, and an optional go_package option. Next the service block, where every RPC becomes a line of the form rpc Method(Request) returns (Response). Toggling streaming wraps the request or response type in the stream keyword, which is how proto3 expresses client-streaming, server-streaming, and bidirectional RPCs.
Then it builds messages. Your field list becomes a shared resource message — for InventoryService that resource is Inventory — with each field assigned a sequential tag number starting at 1. Field names are normalized to snake_case, the proto style convention. Finally, for every RPC it scaffolds a matching MethodRequest and MethodResponse message so the file compiles without dangling references.
Tips and notes
Always version your package (inventory.v1) so a future v2 can coexist. Treat tag numbers as permanent: never renumber an existing field, because the number — not the name — is what travels on the wire. Reserve numbers 19000–19999 are off-limits (protobuf-internal). For evolving APIs, prefer adding new fields with new tags over changing old ones. After copying, expand the stub Request and Response messages with the real fields your endpoints need.