Full working solution with Infrastructure as Code to build and run it on Azure
-
Api { https://szubarga-game-api.azurewebsites.net/swagger/index.html }
-
Game UI { https://szubarga-game-web.azurewebsites.net/ }
- .Net Core 3.1
- Entity Framework Core
- MediatR
- OpenApi
- Autofac
- Serilog
- AutoMapper
- FluentValidation
- xUnit
- NSubstitute
- FluentAssertions
- React
- Parcel
- TypeScript
- Styled Components
- MaterialUI
- CSS Grid & Flexbox
- RxJS
- Axios
- Infrastructure as Code (IaC):
- Docker - every app has Dockerfile with build & run configuration
- Azure Resource Manager template - resource group definition with all resources needed to host it in Azure using App Service
- Service Fabric project with environment definition
- Clean Architecture - puts the business logic and application model at the center of the application
- Clean Code - powered by Stylecop, FxCopAnalyzers, ESLint and Prettier
- Monolithic repository - like Google:)
{ https://research.google/pubs/pub45424/ } - CQRS - in your application can maximize its performance, scalability, and security
{ https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs } - Railway Oriented Programming - functional programming in C# powered by LanguageExt
{ https://github.com/louthy/language-ext }
{ https://zohaib.me/railway-programming-pattern-in-elixir/ }
- Better UX during GAME;)
- Docker Compose
- Jens & Enzyme
- Integration with Azure Functions and external service
- Complete CRUD example
- Additional apps - Admin Panel API and GUI
- Documentation - How to?
Why Clean Architecture?
https://www.youtube.com/watch?v=2dKZ-dWaCiU
Why functional programming??
Programming languages are becoming more functional every year. Features such as generic programming, type inference, list comprehensions, functions as values, and anonymous types, which have traditionally existed as staples of functional programming, have quickly become mainstream features of Java, C#, Delphi and even Fortran. We can expect next-generation programming languages to continue this trend in the future, providing a hybrid of both functional and imperative approaches that meet the evolving needs of modern programming.
Benefits of functional programming:
- pure functions are easier to reason about
- testing is easier
- debugging is easier
- programs are more bulletproof
- programs are written at a higher level, and are therefore easier to comprehend
- function signatures are more meaningful
- parallel/concurrent programming is easier
“Functional programming is often regarded as the best-kept secret of scientific modelers, mathematicians, artificial intelligence researchers, financial institutions, graphic designers, CPU designers, compiler programmers, and telecommunications engineers.”
The Wikipedia F# page