Software Architect Technical Assignment
- If data with same transaction ID has been uploaded again with different amount, currency or date, it will replace the old data (upsert)
- To build the project you must install .NET6 SDK
- The WebApp project is the startup project
- To run the project you must have PostgreSQL running or you can run a container by use docker-compose.yml in src folder)
-
Domain Driven Design
Just use it a little bit because there is only one entity for this domain boundary
-
CQRS
To seperate Command (writing) and Query (reading) of models
-
Onion Architecture
I've chosen to use Marten as peristence framework instead of EF core.
Just a normal razor pages with custom file validation from StackOverflow and some custom error pages.
- api/transaction
- query params
- currencyCode
- start, end (datetime)
- status
- query params
-
A popular csv content reader and writer in .NET
-
A popular FP implementation in .NET
-
Make things easier when doing Linq's Expression
-
To communicate with command handler in CQRS (no direct dependencies to handler)