📄️ Web Server
The colibri-sdk-go package provides a web server abstraction. "Under the hood", we use Fiber, but it can be easily replaced by implementing a new container in the pkg/web/restserver package.
📄️ HTTP Client
The RestClient provides a robust and simplified interface for making HTTP requests in Go. It encapsulates essential features for modern microservices, such as circuit breaker, retry strategies, cache support, and handling of different content types, including multipart/form-data.
📄️ Database
This package provides a robust abstraction layer for SQL database operations, specially optimized for PostgreSQL. It includes features such as transaction management, migrations, paginated queries, caching, and reflection support for object-relational mapping.
📄️ Cache
The package offers a robust cache implementation using Redis, with support for generic types and configurable TTL (Time To Live). It is especially useful for temporarily storing frequently accessed data, reducing the load on other services like the database.
📄️ Asynchronous Communication
This package implements an asynchronous messaging system with support for multiple providers (AWS SNS/SQS, Google Cloud Pub/Sub, and RabbitMQ), covering message production and consumption, observability, and error handling features.
📄️ Storage
The Storage package provides an abstraction layer for cloud storage operations, with native support for AWS S3 and Google Cloud Storage (GCS). It simplifies file manipulation, offering a unified interface and integrated monitoring.
📄️ Observability
The package provides a complete observability layer for applications, integrating metrics, tracing, and logs. The implementation encapsulates OpenTelemetry, offering features for monitoring transactions, segments, and errors.
📄️ Authentication and Authorization
The authentication context package provides a simple and powerful structure for managing authenticated user information throughout the application. Using Go's native context mechanism, it allows storing and retrieving user details securely, making it ideal for multi-tenant applications.
📄️ Transaction Control
This package provides a robust abstraction for working with SQL transactions in Go, allowing the safe execution of multiple database operations as a single atomic unit. The system ensures data integrity through a commit mechanism only if all operations are successful, or an automatic rollback in case of any failure.