🏗️ 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.