Releases: evrone/go-clean-template
Release list
v1.17.1
What's Changed
- chore(deps): security updates by @soltanoff in #457
Full Changelog: v1.17.0...v1.17.1
v1.17.0
Distributed Tracing with OpenTelemetry
End-to-end distributed tracing across the entire request path, powered by OpenTelemetry. A single trace now spans all four transports and every architectural layer: controller -> usecase -> repo. It's exported over OTLP/gRPC to a collector (Jaeger in the docker stack).
What's new
- OTLP/gRPC exporter - a global
TracerProvider(pkg/tracing) with configurable endpoint, TLS, and sampling; spans batch-export to any OTLP-compatible backend. - Cross-transport context propagation - W3C
traceparent+baggage, so traces stay connected regardless of transport:- REST ->
otelfibermiddleware - gRPC ->
otelgrpcstats handler - AMQP RPC / NATS RPC -> trace context carried in message headers via custom carriers
- REST ->
- Instrumented business layers -> use cases and repositories wrapped in tracing decorators, giving full visibility from handler down to DB and external web API calls.
- Jaeger in the docker stack ->
make compose-up-allnow brings up Jaeger, reachable through the nginx reverse proxy. - No-op when disabled -> with
TRACING_ENABLED=false, a no-op tracer provider is installed; instrumentation runs unconditionally with zero overhead. - Internal routes excluded ->
/healthz,/metrics,/swaggerare not traced; only versioned API groups are instrumented.
Configuration
| Variable | Default | Description |
|---|---|---|
TRACING_ENABLED |
false |
Enable OpenTelemetry tracing |
TRACING_OTLP_ENDPOINT |
localhost:4317 |
OTLP/gRPC collector endpoint |
TRACING_OTLP_INSECURE |
true |
Disable TLS for the OTLP exporter |
TRACING_SAMPLE_RATE |
0.1 |
Parent-based sampling ratio |
⚠️ Sampling is parent-based - use1.0locally, but keep it low (0.1/0.01) in production.
Upgrade notes
- Tracing is off by default - no action required to keep current behavior. To enable, set
TRACING_ENABLED=trueand pointTRACING_OTLP_ENDPOINTat your collector. - Persistent repos were reorganized into per-domain packages to host the tracing decorators; the composition root was updated accordingly. No public API or transport contract changes.
PR's
- feat(OTEL): OTEL/OTLP integration by @soltanoff in #452
Full Changelog: v1.16.4...v1.17.0
v1.16.4
What's Changed
- chore(deps): go1.26.5 and security updates by @soltanoff in #450
- chore(docker): remove version specification from docker-compose files by @soltanoff in #451
Full Changelog: v1.16.3...v1.16.4
v1.16.3
What's Changed
- chore(deps): go1.26.4 and security updates by @soltanoff in #439
Full Changelog: v1.16.2...v1.16.3
v1.16.2
What's Changed
- chore(deps): go1.26.3 and security updates (CVE-2026-42501) by @soltanoff in #431
Full Changelog: v1.16.1...v1.16.2
v1.16.1
What's Changed
- feat: update README to reflect addition of NATS RPC and enhance domain descriptions by @soltanoff in #407
- chore(deps): update dependencies and modify linting rules by @soltanoff in #421
- refactor: make nested config structs unexported by @Dawe257 in #419
- chore(ci): update linting actions to use fail_level for error reporting by @soltanoff in #422
New Contributors
Full Changelog: v1.16.0...v1.16.1
v1.16.0
What's New: User Authentication & Task Management
This release adds two major domains to the clean architecture template — user authentication and task management — across all four transport layers (REST, gRPC, RabbitMQ RPC, NATS RPC).
User Authentication
- Registration with bcrypt password hashing and email uniqueness enforcement
- Login with JWT token generation and configurable expiry
- Auth middleware for all transport layers (Fiber, gRPC interceptor, AMQP/NATS token extraction)
- Profile endpoint to retrieve the authenticated user
Task Management
- Full CRUD for tasks scoped to the authenticated user
- Status state machine with validated transitions:
todo→in_progress→done(andin_progress→todo) - List endpoint with pagination (
limit/offset) and optional status filtering - Ownership enforcement — users can only access their own tasks
Infrastructure
- JWT package (
pkg/jwt) with token generation and validation - Three new database migrations:
userstable,taskstable,user_idforeign key on translation history - gRPC server options support (for injecting unary interceptors)
- Protobuf definitions for auth and task services
Testing
- 27 unit tests for the task use case covering all operations and error paths
- Unit tests for user use case (register, login, get)
- Table-driven entity tests for task status transitions
- Auth middleware tests for both REST and gRPC
- Integration tests restructured into separate files by domain (
user_test.go,task_test.go,translation_test.go)
Other Changes
- Swagger docs regenerated with full coverage of new endpoints
- Docker Compose updated with JWT configuration
- Logger simplified (removed redundant debug-level branching in error path)
Chore Changed and PR's
- chore(deps): bump rabbitmq from 4.2.4-management to 4.2.5-management by @dependabot[bot] in #397
- chore(deps): bump google.golang.org/grpc from 1.79.2 to 1.79.3 by @dependabot[bot] in #396
- chore(deps): bump github.com/jackc/pgx/v5 from 5.8.0 to 5.9.1 by @dependabot[bot] in #398
- chore(deps): bump nginx from 1.29.6-alpine to 1.29.7-alpine by @dependabot[bot] in #399
- chore(deps): bump github.com/nats-io/nats.go from 1.49.0 to 1.50.0 by @dependabot[bot] in #400
- chore(deps): update go-playground/validator, zerolog, grpc, and other by @soltanoff in #405
- feat: implement user authentication and task management with JWT support by @soltanoff in #406
Full Changelog: v1.15.2...v1.16.0
v1.15.2
What's Changed
- chore(deps): bump nginx from 1.29.5-alpine to 1.29.6-alpine by @dependabot[bot] in #392
- chore(deps): bump github.com/goccy/go-json from 0.10.5 to 0.10.6 by @dependabot[bot] in #393
- Bump golang from 1.26.0 to 1.26.1 by @soltanoff in #395
Full Changelog: v1.15.1...v1.15.2
v1.15.1
What's Changed
- refactor: improve logger initialization syntax for better readability by @soltanoff in #383
- chore(deps): bump github.com/caarlos0/env/v11 from 11.3.1 to 11.4.0 by @dependabot[bot] in #384
- chore(deps): bump github.com/nats-io/nats.go from 1.48.0 to 1.49.0 by @dependabot[bot] in #385
- chore(deps): bump postgres from 18.2-alpine to 18.3-alpine by @dependabot[bot] in #389
- chore(deps): bump github.com/ansrivas/fiberprometheus/v2 from 2.16.0 to 2.17.0 by @dependabot[bot] in #387
Full Changelog: v1.15.0...v1.15.1
v1.15.0
What's Changed
- chore(deps): bump github.com/ansrivas/fiberprometheus/v2 from 2.15.0 to 2.16.0 by @dependabot[bot] in #377
- chore(deps): bump postgres from 18.1-alpine to 18.2-alpine by @dependabot[bot] in #379
- chore(deps): bump rabbitmq from 4.2.3-management to 4.2.4-management by @dependabot[bot] in #381
- Bump golang from 1.25.7 to 1.26.0 by @soltanoff in #382
Full Changelog: v1.14.7...v1.15.0