|
|
## Applications
|
|
|
|
|
|
The Labrador project consists of several projects:
|
|
|
|
|
|
- Queue: for enqueueing in labs
|
|
|
- Submit: for submitting work
|
|
|
- TAM: for applying to become a TA
|
|
|
- Portal: a frontend to the database
|
|
|
- Plagiarism Detection (Fraudweiler): for detecting fraud
|
|
|
- AuTA: for analyzing, grading and giving feedback on programming projects
|
|
|
- LabraCore: the central database with all shared data
|
|
|
- LibraDoor: a library that allows applications to connect to the core database
|
|
|
- Librador: a library with common functionality
|
|
|
|
|
|
## Libraries / Frameworks / Technologies
|
|
|
|
|
|
We try to use the same libraries among the different applications. Every application is a Spring Boot application with a gradle kts build script and the following libraries:
|
|
|
|
|
|
### Database
|
|
|
|
|
|
- Liquibase: for migrations.
|
|
|
- Hibernate: for database.
|
|
|
- H2: for an in-memory database when developing.
|
|
|
- QueryDSL: for complex queries.
|
|
|
|
|
|
### Developing
|
|
|
|
|
|
- Lombok: provides annotations for generating getters/setters/constructors/etc.
|
|
|
- Guava: provies some useful methods for working with collections.
|
|
|
- ModelMapper: allows easy mapping between different classes with the same fields.
|
|
|
- Spotless: formats code and complains if code is not nicely formatted.
|
|
|
- Licence: makes sure there is a licence at the top of every file.
|
|
|
|
|
|
### Frontend
|
|
|
|
|
|
- Thymeleaf: template processing, allows writing html pages with custom tags to provide template functionality.
|
|
|
- JQuery: simplifies a lot of javascript.
|
|
|
- Font Awesome: used for icons
|
|
|
- ChartJS: for graphs and charts.
|
|
|
|
|
|
### Deploy
|
|
|
|
|
|
- Jaeger: allows tracking of requests through the different applications.
|
|
|
- Sentry: logs errors and provides a web interface to see them.
|
|
|
|
|
|
### Testing
|
|
|
|
|
|
- JUnit: general testing framework.
|
|
|
- AssertJ: provies a nicer way of writing assertions. |