Skip to content

DaniilPoiarkov/Eclipse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Eclipse

Architecture diagram

Eclipse-Project references drawio

Modules

WebAPI

Basicly controllers and health-checks.

Pipelines

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: Eclipse-pipeline-flow drawio

Application.Contracts

Provides public API for application use cases.

Application

Contains implementations of use cases.

Domain.Shared

Contains domain constants (like enums, const values) that can be shared thoughout whole solution.

Domain

Contains domain logic of application.

Core

Provides easy API to build and retrieve pipelines.

Localization

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.

Infrastructure

Basicly contains wrappers with only necessary API and cross-cutting concerns.

DataAccess

Data persistence with EF Core Cosmos Db provider.

Tests

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.

Integrations

API

  • Google API
  • Telegram API

Tech stack

  • ASP.NET 8
  • Quartz
  • Azure CosmosDb
  • Polly
  • Scrutor
  • Serilog
  • EFCore
  • Redis
  • Azure Application Insights

Testing

  • NSubstitute
  • XUnit
  • FluentAssertions
  • Bogus
  • Meziantou
  • SpecFlow
  • Testcontainers

Deployment and CICD

  • GitHub actions
  • Azure AppServices