Important
For AI Agents: Please refer to AGENTS.md for context, conventions, and operational guidelines before proceeding with any tasks.
BiUM is the foundational shared library for the FunctiOnAir (FOA) microservices ecosystem. It provides core building blocks, abstractions, and infrastructure implementations used across all business applications to ensure consistency in logging, data access, messaging, and error handling.
To use BiUM in your project, install the BiUM.Specialized package. This package aggregates core functionalities and common configurations.
dotnet add package BiUM.Specialized --source "https://nuget.pkg.github.com/FOA-FunctiOnAir/index.json"- Restore dependencies:
dotnet restore
- Build the solution:
dotnet build
- Run tests:
dotnet test
BiUM is modular, allowing you to consume only what you need:
- BiUM.Core: The heart of the library. Contains interfaces, base classes, core utilities, and abstractions for Caching, Database, Logging, and Messaging.
- BiUM.Infrastructure: Concrete implementations of Core abstractions, including EF Core, Redis, RabbitMQ, and OpenTelemetry integrations.
- BiUM.Bolt: A lightweight, specialized data access module for high-performance scenarios, enabling easier database configuration.
- BiUM.Specialized: High-level components for application setup, including API configurations, Interceptors, Mapping, and domain-agnostic services.
- BiUM.Contract: Shared Data Transfer Objects (DTOs) and gRPC contracts for inter-service communication.
To consume BiUM packages from the GitHub Package Registry, you must configure your NuGet client with authentication.
- Go to GitHub Settings > Developer settings > Personal access tokens.
- Generate a new token (Classic).
- Select the
read:packagesscope. - Copy the token.
Add a nuget.config file to your solution root:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="bium" value="https://nuget.pkg.github.com/foa-functionair/index.json" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
<packageSourceCredentials>
<bium>
<add key="Username" value="GITHUB_USERNAME" />
<add key="ClearTextPassword" value="GITHUB_TOKEN" />
</bium>
</packageSourceCredentials>
</configuration>Replace GITHUB_USERNAME with your GitHub username and GITHUB_TOKEN with your PAT.
Note
For CI/CD (GitHub Actions), use the automatically provided GITHUB_TOKEN instead of a PAT.
Detailed documentation for each module is available in their respective directories: