Basicly controllers and health-checks.
Contain logic with telegram interaction. In other words it is available for end user functionality.
This diagram shows how pipeline concept works and how user message proccedes:
Provides public API for application use cases.
Contains implementations of use cases.
Contains domain constants (like enums, const values) that can be shared thoughout whole solution.
Contains domain logic of application.
Provides easy API to build and retrieve pipelines.
Provides API for multiple language support in application. As Microsoft.Localization is not very sutable for this purposes and works with XML schemas I desided to create own engine. Here we have ability to dynamicly set culture for localization (Without taking it from request headers) and using json as a schema for resoures. Planning to combine this engine and Microsoft.Localization abstractions.
Basicly contains wrappers with only necessary API and cross-cutting concerns.
Data persistence with EF Core Cosmos Db provider.
Each Test project reference base Eclipse.Tests class library, that provides helpers which used through all tests.
Each module has own test project.
BDD tests written with SpecFlow are all in the single tests assembly.
Integration tests also isolated in separate assembly called Eclipse.IntegrationTests.
- Google API
- Telegram API
- ASP.NET 8
- Quartz
- Azure CosmosDb
- Polly
- Scrutor
- Serilog
- EFCore
- Redis
- Azure Application Insights
- NSubstitute
- XUnit
- FluentAssertions
- Bogus
- Meziantou
- SpecFlow
- Testcontainers
- GitHub actions
- Azure AppServices