tsloughter/grpcbox_plugin
41.6
Weak · 17 September 2026
244
lines of production code
Erlang
primary language
1
measurement over time
What this system is
This system is a Rebar3 plugin designed to generate Erlang code from Protocol Buffer definitions. It supports both unary and streaming gRPC RPCs by producing distinct client and server behavior modules. The tool allows for per-application configuration, enabling users to selectively generate client or server code within umbrella projects.
Behavioural changes
Rebar3 plugin now supports per-app proto generation with client/server selection
The rebar3 plugin has been refactored to generate gRPC behaviors on a per-application basis, allowing it to correctly handle projects with multiple apps or umbrella structures. Users can now specify multiple proto directories and choose to generate only client, only server, or all behaviors via the new 'type' option. The plugin also improves build efficiency by checking file timestamps to avoid unnecessary recompilation and provides more detailed error reporting for proto compilation failures.
src · high confidence
Refactored gRPC code generation to support client modules and streaming RPCs
The code generation templates have been restructured to produce both server behavior modules (renamed from \\_behaviour\ to \\_bhvr\) and new client modules. This change introduces support for client-side gRPC calls, including unary and streaming RPCs, with updated function signatures that allow optional context arguments and return \{error, any()}\ alongside standard success tuples. The generated server behavior modules now use snake\_case naming conventions and have removed build date stamps to ensure deterministic builds.
priv · high confidence
Dependencies
Upgrade gpb dependency and update build configuration
The plugin now depends on gpb version 4.21.1 (upgraded from 4.0.2) and introduces new dependencies on erlware\_commons (\~\> 1.9.1) and providers (\~\> 1.9). This upgrade aligns the plugin with newer gpb capabilities, including the use of type\_specs and strings\_as\_binaries in generated code, and updates the default proto directory from priv/protos to proto in the configuration examples.
(repo-wide) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 42.
Lenses
- Code Health 100
- Architecture 69
- Maturity 43
- Readiness 17
- Security 100
Changes since last survey
- 50 commits — 41 feature/other, 9 fixes
By area
- (root) — 16 commits
- src/grpcbox_plugin_prv.erl — 10 commits
- (repo) — 6 commits
- src/grpcbox_plugin.app.src — 6 commits
- priv/grpcbox_service_bhvr.erl — 4 commits
- priv/grpcbox_service_client.erl — 4 commits
- priv/grpcbox.template — 2 commits
- priv/grpcbox_service.erl — 2 commits
Notable commits
- fix: Fix template doc tags
- fix: Fix template types
- fix: Merge pull request #20 from tomas-abrahamsson/template-doc-type-fixes
- fix: Quick fix for files not being generated when they should
- fix: fix description
- fix: fix include of grpcbox.hrl in client generation
- fix: fix license for hex restrictions
- fix: fix template spec
- fix: fix the *_pb.beam output directory
- change: Auto-create the output directories.
- change: Do not recompile everything on each rebar3 invocation.
- change: Merge pull request #10 from HJianBo/master
- change: Merge pull request #16 from fenollp/patch-1
- change: Merge pull request #18 from fenollp/issue12
- change: Merge pull request #6 from f355/master
- change: Merge pull request #8 from tsloughter/mergeit
- change: add error_response type return
- change: allow generating only the server behaviour.
- change: better support apps under an umbrella
- change: change compile attribute to just atom arg
- …and 30 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
tsloughter/grpcbox_plugin was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 17 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit dfb940e2a5759a60b479896a194a8b5b71a45b9c — the exact code this score is about.
- Scored under rubric-2026.09.13 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d1ef6c0bd534.