go-types



This repo stores types used by many of my projects.
The aim of this repo is to save time and repeated code by unifying them in one single source.
Available Types
- rabbitmq: RabbitMQ config management
- redis: Redis config management
- slog: slog logger config management
- opentelemetry: opentelemetry config management
- envelope: message envelope carrying trace context and payload for distributed tracing
- smtp: SMTP server connection config management
- notification: notification message with destination and severity level
Local development
I run every golang task (tests, vet, coverage…) inside a container, never against a host toolchain. The same image — harbor.windmaker.net/limani/base_golang_1_26 — is used in local development, CI and production, so the environment is identical everywhere.
The development container is defined in development/docker-compose.yml. It mounts the repo into /app and persists the Go module cache in development/gomodcache/ (git-ignored) so dependencies are not re-downloaded on every run.
Bring the container up and open a shell in it:
podman compose -f development/docker-compose.yml up -d
podman compose -f development/docker-compose.yml exec golang /bin/bash
Once inside, run any target, e.g.:
make test
Or execute command outside container:
make test
podman compose -f development/docker-compose.yml exec golang make test
Tear it down when finished:
podman compose -f development/docker-compose.yml down