Skip to content

Releases: evrone/go-clean-template

v1.17.1

Choose a tag to compare

@soltanoff soltanoff released this 18 Jul 22:38
34342a5

What's Changed

Full Changelog: v1.17.0...v1.17.1

v1.17.0

Choose a tag to compare

@soltanoff soltanoff released this 11 Jul 17:24
a6ee41a

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 -> otelfiber middleware
    • gRPC -> otelgrpc stats handler
    • AMQP RPC / NATS RPC -> trace context carried in message headers via custom carriers
  • 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-all now 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, /swagger are 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 - use 1.0 locally, 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=true and point TRACING_OTLP_ENDPOINT at 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

Full Changelog: v1.16.4...v1.17.0

v1.16.4

Choose a tag to compare

@soltanoff soltanoff released this 11 Jul 00:56
ab132be

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

Choose a tag to compare

@soltanoff soltanoff released this 11 Jun 09:03
7142c27

What's Changed

Full Changelog: v1.16.2...v1.16.3

v1.16.2

Choose a tag to compare

@soltanoff soltanoff released this 17 May 22:09
a99c14a

What's Changed

Full Changelog: v1.16.1...v1.16.2

v1.16.1

Choose a tag to compare

@soltanoff soltanoff released this 01 May 17:27
7dd1ac8

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

Choose a tag to compare

@soltanoff soltanoff released this 05 Apr 21:31
55090c8

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: todoin_progressdone (and in_progresstodo)
  • 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: users table, tasks table, user_id foreign 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

Choose a tag to compare

@soltanoff soltanoff released this 16 Mar 18:29
343a88b

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

Choose a tag to compare

@soltanoff soltanoff released this 06 Mar 12:40
d240e54

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

Choose a tag to compare

@soltanoff soltanoff released this 21 Feb 19:24
b231ee2

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