1. Introduction
2. Architecture
3. Technologies
This application was created as part of an engineering thesis for university. Its main purpose was to research and gain experience in technologies, libraries and architecture commonly used to create web applications. Many concepts were adapted from popular github repositories and other sources.
- Frontend - a simple web application written in React.JS
- API, Jobs module, Users module - ASP.NET Core app
- Job offers data, Users data - PostgreSQL databases
- Event Bus - in memory event bus (RabbitMQ or any other broker could be used instead)

Solution and project structure is mainly based on Clean Architecture and Modular Monolith with DDD. Modules consist of multiple projects with the following responsibilites:
- Domain - the Domain model of a module
- Application - logic responsible for processing incoming requests: use cases, event handlers etc.
- Infrastructure - code for accessing external resources such as database access
- IntegrationEvents - contracts published to EventBus
The solution is divided into 4 parts:
- Building blocks - base domain concepts and other commonly used types
- Modules - Users and Jobs modules which contain domain related data and logic
- Persistence - entities mappings for NHibernate
- Web - responsible for authentication and passing request to other modules
The following technologies, frameworks and libraries were used for this project:
