🏗️ Architecture

The solution follows a CQRS-flavored layout, using MediatR to dispatch commands and queries.


Projects

Project Purpose
🌐 Stocks.Apis.Web.ForIntegration The web host: API controllers, startup/DI wiring and configuration
✍️ Stocks.Apis.Commands Command handlers (writes) dispatched via MediatR
🔍 Stocks.Apis.Queries Query handlers (reads) dispatched via MediatR
⚙️ Stocks.Worker / Stocks.Workers Background worker(s) for scheduled/long-running processing
🧩 Stocks.Domain Domain entities and core business rules
🔧 Stocks.Infrastructure Cross-cutting infrastructure concerns (HTTP, configuration, logging wiring)
🔌 Stocks.Integrations Integrations with external data sources/services
🧰 Stocks.Commons Shared low-level utilities used across projects
🤝 Stocks.Shared Shared contracts/models used across layers
⌨️ Stocks.Console Console entry point for local/manual runs

Tests

Project Purpose
Stocks.Tests.UnitTests Unit tests
🔗 Stocks.Tests.IntegrationTests Integration tests — require the SQL Server database from Getting Started

Continuous Integration

Workflow Purpose
build.yml Builds and tests every branch (except main)
build-push.yml Builds, tests, and (when Docker registry credentials are configured) publishes container images on main
publish-docs.yml Builds and publishes this documentation site to GitHub Pages

Versioning is computed by GitVersion from Git history/branch conventions, and surfaced as the assembly informational version during CI builds.