Web application for organizing score prediction games and handling football statistics. This is an (uncompleted) upgrade of previous MVC-based application, see football-predictions.
- Data stores
- Microsoft SQL Server
- SQLite
- Redis (in progress)
- API server
- ASP.NET Core Web API
- Entity Framework Core
- Message queue (under consideration)
- RabbitMQ
- Client web application
- Angular 5
- Server prerendering
- Node.js
- Webpack
- Reverse proxy (in progress)
- Nginx
- Docker
- Ansible (in progress)
- Rich Domain: most business logic in domain models and domain services
- Separate ORM-configurations from domain via Entity Framework Core 2.0 features (owned types, fluent API)
- CQRS approach (via MediatR) instead of Repository Pattern
- REST API, even non-CRUD operations are considered as GET/POST resource manipulations (in progress)
- Event sourcing (under consideration)
- Persistence (DbContext, data fetching strategies)
- Domain (models, services)
- ReadModel (queries, DTOs)
- WriteModel (commands, DTOs)
- Web (controllers, middleware, composition root)
- Using xUnit
- Unit tests for each layer
- Testing database operations with local database and json-fixtures
- Integration tests with TestServer (in progress)
- E2E tests (in progress)
For now client is very sketchy: no complex styles, no pretty animations, just borders and text, "proof of concept".
- Node.js prerendering
- Lazy loading modules
- Cyrillic dates by default
- Simple pages for "crudable" resources
- Reusable and customizable match-table component