This project is a collaboration between Fontys ICT, IT-Workz and Breens network to create a new version of the PARS application. PARS is a student registration system used by Dutch highschools. The reason for wanting a new version of PARS is that they overdeveloped the current version specifically for one of their clients. They now want a version of PARS that is usable for different highschools with the ability to configure settings per school. The PARS application should meet the set requirements and is fully available to the end user as a cloud application. For this, a good architecture must be set up, which is well secured. The application should have 2 roles available, the first one being a teacher role. The teacher should be able to keep track of students attendance with the PARS application. The second role being an administrator. The administrator should be able to configure the school's settings to fit their needs.
At the moment of writing, the backend does not function the way it was intended. The UserManagement and ScheduleManagement services are not yet functional. One of the reasons being that information needed for these services haven't been deliverd to the project group. PARS needs all backend services to function, since it wasn't possible to make all of them work, PARS isn't fucntional. The Microsoft Authentication is working properly and is implemented in the frontend. The UserValidation Service can be used to validate if students are either present, late, late with a reason or absent in specific classes with their respective teachers. The Configuration Service can be used to setup basic school settings like colors of the presence/absence indicators and the class schedule. The API Gateway can be used for frontend -> backend communication. Since not all backend services are up and running, it isn't possible to make them function in the frontend either. In the future, the Usermanagement and ScheduleManagement services should get fixed so that their functionality can be used in the frontend to create a working version of PARS.
Because this project makes use of the microservice architecture the project is split into several components/services. These different microservices consist of 3 projects:
The UserValidation Services handles the attendance of students in classes. This is used by teachers in the frontend to keep track of attendance of students in their classes.
The Configuration Service handles the configurations of the PARS application for schools. This is used by administrators to setup the preferences for their school.
The UserManagement Service is responsible for getting student data from the ODS2 Database. This student data will be used to keep track of all students in a school.
The ScheduleManagement Service is responsible for getting the schedules of teachers and students from the Xedule software system.
The API Gateway is used as a way for the frontend to communicate with the different backend services. This way the frontend doesn't have to talk to each backend service specifically.
For future development using Microsoft auth we used the following guide to create a basic set up in the React frontend
To fully use this project, all services need to be running. This can be done either through your IDE for development or through the docker-compose file. To start working with this project:
cd ..\Shared\Docker\
docker-compose up -d
The frontend is written in React using Typescript. The frontend can be used by end users to validate student absence, to configure schedules and to authenticate/authorize users. To start working with this project:
npm install
npm start
What are microservices?
Backlog with open issues
All used dependencies within the different microservices. | Service | Package | Version |
---|---|---|---|
ConfigurationService | API | ||
Microsoft.EntityFrameworkCore | 7.0.13 | ||
Microsoft.EntityFrameworkCore.Design | 7.0.0 | ||
Swashbuckle.AspNetCore | 6.5.0 | ||
Pomelo.EntityFrameworkCore.MySql | 7.0.0 | ||
UserValidationService | API | ||
Microsoft.EntityFrameworkCore | 7.0.11 | ||
Microsoft.EntityFrameworkCore.Design | 7.0.11 | ||
Microsoft.AspNetCore.OpenApi | 7.0.5 | ||
Microsoft.VisualStudio.Azure.Containers.Tools.Targets | 1.17.2 | ||
RabbitMQ.Client | 6.5.0 | ||
Swashbuckle.AspNetCore | 6.4.0 | ||
Core | |||
DAL | |||
Microsoft.EntityFrameworkCore | 7.0.11 | ||
Microsoft.EntityFrameworkCore.Design | 7.0.11 | ||
Microsoft.EntityFrameworkCore.SqlServer | 7.0.11 | ||
Microsoft.Extensions.Configuration | 7.0.0 | ||
Microsoft.EntityFrameworkCore.Tools | 7.0.11 | ||
Microsoft.Extensions.Configuration.Json | 7.0.0 | ||
API.Gateway | |||
Microsoft.EntityFrameworkCore | 7.0.14 | ||
Microsoft.EntityFrameworkCore | 7.0.14 | ||
Microsoft.Extensions.Configuration | 8.0.0 | ||
Ocelot | 20.0.0 | ||
Swashbuckle.AspNetCore | 6.2.3 |
All documentation can be found here