Skip to content

senoramarillo/roommgmt-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project "Room Management"

Build Status codecov Technical Debt Coverage Code Smells Vulnerabilities License

Demo

Room-Management

Swagger UI

Docker Hub

Architecture

SonarCloud

Spring Boot version 2.5.12

Git structure

Project description

This is the basic project for the "Room Management" exercise. The goal of this exercise is to apply the content taught in the previous courses on the topics of architecture and development with the Spring framework. In particular the following technologies in particular:

  • Spring Framework
    • Spring Boot
    • Spring REST
    • Spring Data JPA
  • JPA (Hibernate)
  • Unit-Tests with JUnit, Mockito und AssertJ

Functional requirements

The final application should offer classic master data processing (CRUD) including some search operations via a REST API.

The domain model consists of three entities:

  • Building: Represents a building.
  • Room: Represents a room. This is associated with a building.
  • Meeting (optional): Represents a meeting/lecture/event and is associated with a room. The required attributes of the entities are listed below.

Entity Building

A building has the following natural attributes:

  • Building number
  • Optional description
  • A flag whether public access is possible.
Attribut Eigenschaften
Building Number String, required, unique
Description String, optional
Public Access Boolean, required

Entity Room

A room has the following natural attributes:

  • Building
  • Room number
  • Number of seats
  • A flag whether a beamer is available
Attribut Eigenschaften
Building Building, required
Room number String, required
Seats Integer, required, zwischen 1 und 9999
Projector present Boolean, required

In addition, the application must ensure that the combination of building and room number is unique.

Entity Meeting (optional)

A meeting has the following natural attributes:

  • Room
  • Subject
  • Start and end time
Attribut Properties
Room Room, required
Topic String, required
Start Instant, required
End Instant, required

Required functions

The application shall provide the following functions via a REST API:

  • Buildings
    • List all buildings
    • Create, modify and delete a building
    • Search a building by building number
    • Search all buildings with public access
  • Room
    • List all rooms
    • Create, modify and delete a room
    • Search a room by building number and room number
    • Search all rooms in a building
    • Search all rooms with public access
  • Meeting
    • List all meetings
    • Create, modify and delete a meeting
    • Search all meetings in a specific period (from, to)
    • Search all meetings in a building in a specific time period (from, to)
    • Search all meetings in a room in a specific time period (from, to)

Technical requirements

In addition to the functional requirements, the technical requirements listed below must be met. must be met.

REST API

The application must provide a REST API that follows common REST standards. Error handling is done through the use of HTTP status codes.

Layer architecture

The application must implement a three-tier architecture:

  A[REST Controller] --> B[Service];
  B --> C[Repository];

The individual layers are to be developed on the basis of the following technologies:

  • REST Controller
    • Spring REST Controller (Spring MVC)
  • Service
    • Standard Spring Framework
  • Repository
    • Spring Data JPA
    • Hibernate
  • Database
    • H2

It is permitted to use complementary technologies as long as they do not replace the technologies listed above or bypass the or circumvent the three-layer architecture.

Transaction handling

Clean transaction handling is required. In particular, it is important to set the transaction bracket in the correct correct layer (Unit of Work).

Testing

Unit tests are ideally implemented in each layer.

However, for the purposes of this exercise, the implementation of unit tests is only mandatory for the Controllers and the Services are mandatory. Full test coverage of all methods is not required for this exercise.

Optionally, unit tests can of course also be built for the Repositories.

Application testing

Testing of the application is possible at any time locally in the IDE. To do this, simply start the Spring boot application. IntelliJ automatically generates a run configuration for this purpose. Alternatively, you can also click on the Play icon in the main class com.spring.roommgmt.RoomManagementApplication.

Testing the REST API is best done using HTTP scratch files. These can be created directly in the IntelliJ application.

Available Scripts for React Frontend

In the project directory, you can run:

npm start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

npm test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

npm run build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

See the section about deployment for more information.

License

This project is available under the MIT license. See the LICENSE file for more information.