Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 21 additions & 4 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ module(
)

# Go rules for building Go code
bazel_dep(name = "rules_go", version = "0.56.1")
bazel_dep(name = "rules_go", version = "0.60.0")

# Gazelle for generating BUILD files automatically
bazel_dep(name = "gazelle", version = "0.44.0")
bazel_dep(name = "gazelle", version = "0.50.0")

# Rust rules for building Rust code
bazel_dep(name = "rules_rust", version = "0.67.0")
Expand All @@ -22,7 +22,7 @@ bazel_dep(name = "protobuf", version = "29.0")

# Configure Go SDK
go_sdk = use_extension("@rules_go//go:extensions.bzl", "go_sdk")
go_sdk.download(version = "1.24.6")
go_sdk.download(version = "1.24.13")

# Configure Go dependencies from go.work
go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps")
Expand All @@ -34,7 +34,24 @@ go_deps.config(
"GOPROXY": "https://proxy.golang.org,direct",
},
)
use_repo(go_deps, "org_golang_google_grpc")
use_repo(
go_deps,
"com_github_google_uuid",
"com_github_grpc_ecosystem_go_grpc_middleware_v2",
"com_github_jackc_pgx_v5",
"com_github_open_feature_go_sdk",
"com_github_prometheus_client_golang",
"io_opentelemetry_go_contrib_instrumentation_google_golang_org_grpc_otelgrpc",
"io_opentelemetry_go_otel",
"io_opentelemetry_go_otel_exporters_prometheus",
"io_opentelemetry_go_otel_sdk",
"io_opentelemetry_go_otel_sdk_metric",
"io_opentelemetry_go_otel_trace",
"org_golang_google_genproto_googleapis_rpc",
"org_golang_google_grpc",
"org_golang_google_protobuf",
"org_golang_x_time",
)

# Configure Rust toolchain
rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
Expand Down
1,401 changes: 367 additions & 1,034 deletions MODULE.bazel.lock

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,15 @@

## What's Included

- **scaffold/**: Production-grade Go gRPC service reference implementation
- Structured logging (slog + JSON), request ID propagation
- OpenTelemetry metrics + traces with Prometheus exposition
- gRPC health checking, reflection, and channelz debugging
- Rate limiting, auth interceptor, structured error handling (google.rpc.Status)
- Feature flags via OpenFeature SDK
- PostgreSQL database access (pgx + sqlc), optional at runtime
- Build metadata injection via Bazel x_defs
- Kubernetes deployment manifests (health probes, HPA, graceful shutdown)
- **grpc_example/**: Working gRPC service implementations
- Go client and server
- Rust client and server
Expand All @@ -19,6 +28,7 @@

## Use Cases

- Building production-ready Go microservices on Kubernetes
- Starting a polyglot microservices project
- Learning how to structure multi-language Bazel workspaces
- Understanding gRPC service implementations across different languages
Expand Down
4 changes: 4 additions & 0 deletions WORKSPACE
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Empty WORKSPACE file for IDE compatibility
# Using Bzlmod (MODULE.bazel) for dependency management

load("//:deps.bzl", "go_dependencies")

# gazelle:repository_macro deps.bzl%go_dependencies
go_dependencies()
Loading