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.