Semestral project is a client–server application working with at least 3 domain types that implements full CRUD (operations create, read, update, delete) over all of them.
It is a three-layer application (persistence layer, business/application layer, and presentation layer (REST API): hard requirement):
- uses Spring Framework and written in Java programming language (hard requirement; another JVM language may be approved: ask the tutor)
- uses object-relational mapping (ORM) in persistence layer
- the data tier must use a relational database system that uses a persistent data storage and is capable of serving concurrent requests (a DB server): otherwise loss of 2 pts
- neither in-memory DB nor an embedded DB (e.g., SQLite) is not an option
- while meeting these criteria, the RDBMS is the student’s choice
- at least three entities with at least one many-to-many association (implies at least four tables in the database)
- loss of 4 pts without a working many-to-many association
- implements complete CRUD over all entities and also over the M:N association
- at least one complex query (besides CRUD or working with M:N association; thus multiple tables should be involved) in ORM (using JPQL); otherwise loss of 4 pts
- contains clearly separated business layer
- implements all data operations enabled by persistence layer (using delegation)
- uses transactions in a reasonable way
- loss of 0.5 pt for any non-working operation
- loss of 5 pts for each case of improper layering
- contains clearly separated layer of RESTful web service (REST API)
- exposes all business operations and supports all entities; loss of 2 pts for each non-working operation
- follows web standards (designing and implementing standardized REST API is important here); loss of 1 pt for each working and not RESTful operation
- does not return HTTP status 500 for invalid requests (i.e., the service is bug-free, status 500 is used only for server problems, e.g., DB connection); loss of 1 pt for each case of HTTP status breaking standards
- complete and machine-readable API documentation (e.g., OpenAPI): all endpoints, operations, and data formats; loss of up to 2 pts for missing or poor quality API documentation
- contains automated tests
- three different types of tests taught in this course; loss of up to 4 pts for missing type of test or for test of poor quality
- uses smart build (Gradle); automated tests should be run and evaluated within the build system
- is developed using the git versioning system
- Gitlab FIT repository (gitlab.fit.cvut.cz//<server_repo>) should be used for both development and submitting
It is an application written in any programming/scripting language with the following features:
- any user interface (web, GUI, interactive console application)
- uses the REST API of the server part as the backend
- implements a complex business logic operation over the server part (this business operation needs to be approved by the tutor until checkpoint 1, see below)
- the business operation is a single action that is composed of multiple data operations (CRUD); the client issues these data operations by multiple calls on the server part
- is versioned
- loss of 15 pts for non-working complex operation
- Gitlab FIT repository (gitlab.fit.cvut.cz//<client_repo>) should be used for both development and submitting
- loss of 20 pts for missing or very poor client application