Bullabs/Qitar
44.3
Weak · 21 September 2026
5.1k
lines of production code
C#
primary language
4
measurements over time
What this system is
This system is a modular .NET application framework, Qitar, designed to accelerate the development of distributed, multi-tenant applications. It provides a comprehensive infrastructure layer that includes domain modeling primitives, a pluggable messaging bus supporting Kafka and RabbitMQ, and a flexible persistence abstraction for SQL databases like PostgreSQL, Oracle, and Snowflake. Additionally, it offers web middleware for security and tracing, along with distributed caching and background job scheduling capabilities.
Features
Add Fluent Validation integration for command validation
The Qitar.Validation.FluentValidation package now provides a concrete implementation of IValidationProvider backed by FluentValidation. This allows the application to validate commands using FluentValidation validators registered in the DI container, with the provider resolving validators via IResolveHandler and returning structured validation errors.
src/Qitar.Validation.FluentValidation · high confidence
Add Kafka bus provider implementation
Introduced the core components for a Kafka-based message bus, including the \KafkaBusProvider\ for publishing messages with headers, a \GroupIdFactory\ for generating consumer group identifiers, and the necessary DI extensions and configuration options to wire up the Kafka producer and consumer clients.
src/Qitar.Bus.Kafka · medium confidence
Add Oracle database connection support
A new Oracle database connection factory has been added to the Qitar.Store.Oracle module. This introduces an OracleDatabaseConnectionFactory that implements the ISqlConnectionFactory interface, enabling the application to open and manage Oracle database connections using the Oracle.ManagedDataAccess.Client library.
src/Qitar.Store.Oracle · high confidence
Add RabbitMQ bus provider and DI extension
The Qitar.Bus.RabbitMQ package now includes a new RabbitMQBusProvider implementation and a corresponding ServiceCollection extension (UseHangfireTaks) to register the bus provider as a singleton. The provider handles publishing messages to RabbitMQ topics with optional delay headers and subscribing to queues, while RabbitMQOptions allow configuration of the connection string and topic prefix.
src/Qitar.Bus.RabbitMQ · high confidence
Add Redis-based distributed cache support
The Qitar.Caching.DistributedCache.Redis package now provides a new extension method, AddDistributedMemoryCache, which configures the application's dependency injection container to use Redis for distributed caching via StackExchange.Redis. This allows users to easily integrate Redis as their distributed cache provider.
src/Qitar.Caching.DistributedCache.Redis · high confidence
Add distributed caching support via IDistributedCache
A new \DistributedCacheProvider\ implementation is introduced to provide distributed caching capabilities. The provider serializes and deserializes objects using an \ISerializer\ and stores them in a underlying \IDistributedCache\ store. A corresponding extension method \AddDistributedCache\ is added to register the cache provider in the dependency injection container.
src/Qitar.Caching.DistributedCache · high confidence
Added SQL transaction implementation
A new SqlTransaction class has been added to the Qitar.Store.Sql namespace. This class implements the ITransaction interface, wrapping an IDbContextTransaction to provide Commit, Rollback, and Dispose functionality for SQL-based database operations.
src/Qitar.Store/Sql · high confidence
Added SqlTransaction implementation for database transaction management
Introduced a new SqlTransaction class that implements the ITransaction interface, providing concrete support for committing and rolling back SQL-based database transactions. This addition enables the application to manage database transaction lifecycles with proper resource disposal.
src/Qitar.Store/Transactions · high confidence
Added database connection factories for Postgres and Snowflake
Introduced new PostgresDatabaseConnectionFactory and SnowflakeDatabaseConnectionFactory classes that implement the ISqlConnectionFactory interface. These components provide the ability to open database connections for PostgreSQL and Snowflake respectively, each integrating with the system's logging infrastructure.
src/Qitar.Store.Postgres, src/Qitar.Store.Snowflake · high confidence
Added entity factory implementations for events and tenants
Introduced a new \IEntityFactory\<TSource, TDestination\>\ interface and concrete implementations for \EventEntity\ and \TenantEntity\. The \EventEntityFactory\ serializes event payloads using a provided \ISerializer\, while the \TenantEntityFactory\ maps tenant objects to entities using an \IMapper\. These additions provide a standardized way to create and transform domain entities into their storage representations.
src/Qitar.Store/Entities · high confidence
Added entity models for events and tenants
New entity classes have been introduced to support event tracking and tenant management. The EventEntity model captures event details including version, type, payload, timestamp, and user. The TenantEntity model defines tenant configuration including name, identifier, connection string, connection type, culture, and time zone settings.
Qitar.Store · high confidence
Introduce Dapper-based persistence implementations
Added new Dapper-based implementations for data access: a generic DapperRepository that provides CRUD operations (Insert, Update, Delete, GetById) using Dapper.Contrib, and a DapperEventStore skeleton for event sourcing. These are wired into the DI container via a new ServiceCollectionExtensions.AddDapperRepository method that registers the generic repository and event store providers.
src/Qitar.Store.Dapper · high confidence
Introduce connection factory and database migration interfaces
Added new files to the Qitar.Store module to support database connectivity and schema management. The \ConnectionFactory\ class and \ISqlConnectionFactory\ interface provide a mechanism for creating and opening SQL database connections based on a specified type. Additionally, the \IDatabaseMigrator\ interface defines the contract for executing database migrations against a given assembly. These components are registered via the new \ServiceCollectionExtensions\ helper, which allows consumers to easily wire up the store's connection and migration capabilities.
src/Qitar.Store/Connections · high confidence
Introduce core domain primitives for entities, aggregates, and auditing
The Qitar module now includes foundational classes for domain modeling: a generic \Entity\<TKey\>\ base class providing identity and equality semantics, an \AuditableEntity\<TKey\>\ that adds tracking for creation, modification, and soft-delete states, and an \Aggregate\<TKey\>\ base class that manages uncommitted events. Additionally, an \AuditLog\<TKey\>\ class is introduced to record table-level changes, and an \ISnapshotAggregate\ interface is added to support versioned state snapshots.
Qitar · high confidence
Introduces core infrastructure components for messaging, caching, and task scheduling
The codebase now includes a message bus implementation (Bus, BusMessage, BusSubscribersService) with topic normalization and tenant-aware routing, a distributed caching layer (CacheService, CacheKeyNormalizer) with tenant-scoped keys, a command coordination pipeline (CommandCoordinator, CommandResult) that enforces validation and permission checks, and a Hangfire-based background job provider (HangfireProvider, QitarJobActivator) for scheduling and recurring tasks. Additionally, foundational types for auditing (AuditLogFactory, IAuditLog), cryptography (Encryptor, Hasher), and dependency resolution (Resolver, IResolveHandler) have been added to support these capabilities.
src/Qitar · high confidence
Introduces foundational web infrastructure: base controllers, middleware, and extension methods
Adds a new \BaseController\ that provides a shared \IDispatcher\ for controllers, along with \BaseControllerResponse\ and \IControllerResponse\ interfaces for standardized API responses. Introduces a suite of ASP.NET Core middleware components: \ExceptionHandlingMiddleware\ for global error handling, \SecurityHeadersMiddleware\ to enforce security headers, \CorrelationIdMiddleware\ for request tracing, \RequestTimerMiddleware\ and \RequestErrorMiddleware\ for metrics, and \TenancyMiddleware\ for tenant resolution. Additionally, provides \ApplicationBuilderExtensions\ and \ServiceCollectionExtensions\ to wire up these features, including Swagger configuration and API versioning support.
src/Qitar.Web · high confidence
Behavioural changes
Qitar framework updated to version 0.2.3/0.2.4 with .NET 6 support
The Qitar application framework has been updated to version 0.2.3 (package version 0.2.4), which includes a significant upgrade to the .NET 6.0 target framework, replacing the previous .NET Standard 2.1 target. The project configuration has also been updated to use C\# 10.0 language version, and the build process now includes packaging the project's logo and README files into the NuGet package.
(repo-wide) · high confidence
Dependencies
Update project dependencies to latest stable versions
This update refreshes the dependency graph across the codebase. In the .NET projects, core libraries are upgraded to their latest stable releases, including FluentValidation (11.5.1), Microsoft.EntityFrameworkCore (6.0.8), and Swashbuckle.AspNetCore (6.4.0). Additionally, the documentation site's \@vuepress/plugin-git\ dependency is updated to version 2.0.0-beta.61.
(dependencies) · medium confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 45 → 44 (-0.7)
- Rubric changed (rubric-2026.08.18 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 58 → 54 (-3.4)
- Architecture 74 → 74 (+0.0)
- Maturity 43 → 42 (-1.6)
- Readiness 35 → 35 (+0.0)
- Security 58 → 60 (+2.1)
- Performance 82 → 82 (+0.0)
Resolved (30)
- Bounded contexts not declared
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 10 more
New (41)
- Duplicated block (11 lines × 2) (src/Qitar.Store/Sql/SqlTransaction.cs)
- Duplicated block (7 lines × 2) (src/Qitar.Task.Hangfire/HangfireProvider.cs)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 21 more
Architecture
- Unchanged — 3 containers · 2 contexts · 1 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
Bullabs/Qitar was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 1db93d6c7333accadf613697e71f6d143e0d1d04 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.