📄️ Web server
O projeto colibri-sdk-go fornece uma abstração de um container web, por baixo do capô utilizamos o fiber, mas ele pode ser facilmente trocado implementando um novo container, na pasta pkg/web/restserver.
📄️ Cliente HTTP
O RestClient é uma estrutura em Go que fornece uma interface robusta para fazer requisições HTTP. Ele inclui recursos como circuit breaker, retry de requisições, cache, e suporte para diferentes tipos de requisições HTTP incluindo multipart/form-data.
📄️ Banco de dados
Este pacote fornece uma camada de abstração robusta para operações com banco de dados SQL, especialmente otimizado para PostgreSQL. Inclui funcionalidades como gerenciamento de transações, migrações, consultas paginadas, cache e suporte a reflection para mapeamento objeto-relacional.
📄️ Cache
O pacote oferece uma implementação robusta de cache usando Redis, com suporte a tipos genéricos e TTL (Time To Live) configurável. É especialmente útil para armazenar temporariamente dados frequentemente acessados, reduzindo a carga em outros serviços como banco de dados.
📄️ Comunicação assíncona
Este pacote implementa um sistema de mensageria assíncrona com suporte para múltiplos provedores (AWS SNS/SQS e Google Cloud Pub/Sub), com recursos de produção e consumo de mensagens, observabilidade e tratamento de erros.
📄️ Storage
Este pacote fornece uma abstração para operações de armazenamento em nuvem, suportando tanto AWS S3 quanto Google Cloud Storage (GCS). Oferece operações básicas de manipulação de arquivos com monitoramento integrado.
📄️ Observabilidade
Este pacote fornece uma camada completa de observabilidade para aplicações, integrando métricas, tracing e logging. É encapsulada a implementação com OpenTelemetry, oferecendo recursos para monitoramento de transações, segmentos e erros.
📄️ Autenticação e autorização
O pacote de contexto de autenticação fornece uma estrutura simples mas poderosa para gerenciar a informação do usuário autenticado através da aplicação. Ele utiliza o mecanismo de contexto do Go para armazenar e recuperar detalhes do usuário, sendo especialmente útil em aplicações multi-tenant.
📄️ Controle de transações
Este pacote fornece uma abstração para trabalhar com transações SQL em Go, permitindo a execução segura de múltiplas operações de banco de dados como uma única unidade atômica. O sistema garante que todas as operações sejam confirmadas (commit) apenas se todas forem bem-sucedidas, ou que nenhuma seja aplicada (rollback) em caso de falha.