TaskHub.Shared is the core foundation of the TaskHub ecosystem — a collection of lightweight, reusable building blocks that power all TaskHub microservices. It provides shared primitives, abstractions, contracts, and infrastructure adapters designed around Domain-Driven Design (DDD) and Clean Architecture principles.
TaskHub.Shared contains the fundamental components and patterns used across all bounded contexts in TaskHub.
- TaskHub.Shared.Primitives — Core value objects, identifiers, and base types shared across all domains.
- TaskHub.Shared.Response — Unified result system (
Result,ValueResult<T>,ResultFactory) for consistent success/error handling. - TaskHub.Shared.Commands.Abstractions — Abstractions for the command pipeline (interfaces for command handlers, behaviors, buses).
- TaskHub.Shared.Commands.Bus — Default in-process command bus implementation with behavior orchestration.
- TaskHub.Shared.Events.Abstractions — Domain event abstractions for cross-service communication.
- TaskHub.Shared.Persistence.Abstractions — Interfaces for read/write repositories, unit of work, and persistence contracts.
- TaskHub.Shared.Infrastructure.EfCore — EF Core helpers, interceptors, and base configurations for database integration.
- TaskHub.Shared.Redis — Integration with Redis for caching and distributed state management.
- TaskHub.Shared.OpenTelemetry — Preconfigured telemetry setup for metrics, traces, and logs (Tempo, Prometheus, Loki).
- TaskHub.Shared.Swagger — Common Swagger and API documentation configuration for ASP.NET Core services.
- TaskHub.Shared.GeoCoding.Abstractions — Abstractions for geocoding providers.
- TaskHub.Shared.GeoCoding.Nominatim — Implementation of the geocoding service using the Nominatim API.
- TaskHub.Shared.GeoCoding.Bootstraper — Provides a lightweight entry-point that simplifies service startup and composition across TaskHub microservices..
- DDD & Clean Architecture — separation between abstractions and implementations.
- Lightweight by Design — each project compiles into a minimal, focused package.
- Composability — services import only the shared modules they depend on.
- Cross-Service Consistency — unified patterns for results, commands, events, and telemetry.