Skip to content

2. System Overview

Alexander Hansson edited this page Mar 26, 2023 · 2 revisions

Overall Architecture

The overall architecture can currently be split into 6 components with different responsibilities. They are as follows:

1. Controller: Receives and responds to http-requests by calling on appropriate methods in the other components to generate the desired outcome. To control the format of the input and output, may requests and db responses be converted to dto:s before being forwarded to repositories or sent as a response.

2. Repository: Responsible for translating requests into queries against the model and converting query results to relevant data objects before returning them.

3. Model: C# representation of the the database tables.

4. DTO: Data Transfer Object that converts data to an object consisting of only relevant data. Can be used to prevent data leakage in http-responses or as an simplified method of moving data between different components.

5. Services: Responsible for functionality outside the manipulation and gathering of data in the database. This entails token & file management, password validation and email services.

6. Helpers: Consists of helper functions for the controller. Currently only converts claims to intelligible data.

Overall_Architecture drawio (4)

More in-depth resources:

Architecting-Modern-Web-Applications-with-ASP.NET-Core-and-Azure.pdf

NET-Microservices-Architecture-for-Containerized-NET-Applications.pdf

Relations between Model tables

ER-Diagram

ER-backend drawio (2)

Relations

Current relations between the tables in the model:

User(Id, Email, PasswordHash, Role, FirstName, LastName, PhoneNr, FoodPreferences, hasProfilePicture, hasCV, ProfilePictureUrl, CompanyId)

Student(Id, Programme, ResumeEnUrl, ResumeSvUrl, LinkedIn, MasterTitle, Year, UserId)

Company(Id, Name, Description, DidYouKnow, LogoUrl, Website, HostName, HostEmail, HostPhone, DesiredDegrees, DesiredProgramme, Positions, Industries)

StudentSessionTimeslot(Id, Start, End, Location, StudentId, CompanyId)

StudentSessionApplication(Id, Motivation, Status, Booked, StudentId, CompanyId)

Event(Id, Name, Description, Date, Start, End, Location, Host, Language, Capacity, TicketCount)

Ticket(Id, Code, PhotoOk, isConsumed, EventId, UserId)