Inspired from NorthwindTraders Slides
- Playlists service
- CRUD
- Synchro (by playlist && by group)
- Decorators
- Cleaning names
- Auto grouping
- Shift time
- Custom && dynamic
- DataSources
- EPG service
- Picons service
- Authentication Service (IDP)
- Notification Service
This is using ASP.NET Core with:
- Entity Framework Core on PostgreSQL and InMemory for testing
- OPEN API 3 with NSwag
- Event sourcing
- MediatR
- TDD:
- Xunit,
- anglesharp
- Moq
- e2e with Cypress
- Prometheus metrics
- Beat Pulse for liveness and readiness check
- BeatPulse.IdSvr
- BeatPulse.Elasticsearch
- BeatPulse.Npgsql
- Serilog for logging
- AutoMapper
- Fluentvalidation
- Command CQRS validation
- DDD Aggregate pattern
- Persistence Ignorance (PI) principle says that the Domain Model should be ignorant of how its data is saved or retrieved:
- No data access code
- No data annotations for our entities
- No inheritance from any framework classes, entities should be Plain Old CLR Object
- Putting all data access code outside our domain model implementation
- Using Entity Framework Core features:
- Shadow Properties
- Owned Entity Types
- Private fields mapping
- Value Conversions