Git Product home page Git Product logo

spring-booklibrary's Introduction

Spring-BookLibrary

Spring RESTFul BookLibrary (Case Study)

A small but powerful monolithic RESTFul service for the management of a Book Library.

Motivation

This project is aimed on enforcing the knowledge of Spring Framework, REST services and related technologies with emphasis on testability.

Technologies

Project is created with:

  • Java 11
  • Maven
  • PostgreSQL
  • Spring Boot 2.3.9
  • Spring Web
  • Spring Data
  • Spring Security
  • DBUnit 2.5.4
  • Spring Test DBUnit 1.3.0
  • Jackson 2.11.1
  • Swagger 3.0.0
  • Lombok 1.18.18

Features

  • Book management
  • User management
  • Access management (authentication + authorization)
  • Reservation management

Setup

Spring-BookLibrary is a Spring Boot application built using Maven. You can build a jar file and run it from the command line:

git clone https://github.com/niolikon/Spring-BookLibrary.git
cd Spring-BookLibrary
./mvnw package
java -jar target/*.jar

Documentation

The exported RESTFul APIs are documented using Swagger framework, you can access the provided documentation by running Spring-BookLibrary and opening Swing UI on your browser.

Please use the Authorize button to test the CRUD operations with different user profiles. Feel free to use the test credentials Username "test" with Password "test".

Test

This project provides a sample dashboard for Insomnia REST Client with some pre-configured REST requests.

License

The Spring-BookLibrary (Case Study) application is released under MIT License.

spring-booklibrary's People

Contributors

niolikon avatar

Watchers

 avatar

spring-booklibrary's Issues

DEV SBL_000000_A01 Persistence layer

I'm opening this issue to track the development activities related to the implementation of the Persistence layer.

This development will modify accordingly the Controller, Service and Model classes for the following features:

  • Author management
  • Book management
  • Publisher management

DEV SBL_000001_A03 Introduce Lombok

I'm opening this issue to track the development activities related to the introdution of the Lombok support

This development will modify getters and setters of the entities to explore the features offered by the Lombok project.

DEV SBL_000001_A03 Merge contributions

A new Spring-BookLibrary version 0.0.0-A03 has to be prepared to merge the following contributions:

#3 DEV SBL_000001_A02 User access management
#2 BUG SBL_000001_A02 Broken link on README.md

DEV SBL_000001_A03 Introduce Swagger documentation

I'm opening this issue to track the development activities related to the introdution of the Swagger documentation support

This development will introduce Swagger in this WebService and add annotations to document the REST API methods.

DEV SBL_000001_A05 Introduce filter methods

I'm opening this issue to track the development activities related to the introdution of the filter methods.

Each feature will expose an additional /filter endpoint that will allow to enter a single key. This key will be used to perform a search using the keyword on each field.

An user without "ROLE_ADMIN" authorization will not be allowed to use this feature on users.

DEV SBL_000001_A05 Merge contributions

A new Spring-BookLibrary version 0.0.0-A05 has to be prepared to merge the following contributions:

#10 DEV_SBL_000001_A04 Upgrade swagger
#5 DEV SBL_000001_A04 User authorization management

Remember to update, according with the new version:

pom.xml
SwaggerConfig.java
The README.md should be updated to mention the documentation available on swagger-ui/

DEV SBL_000001_A04 User authorization management

I'm opening this issue to track the development activities related to the implementation of the User control management.

This development will introduce the modifications needed to limit the operations allowed based on user authorities.
More in detail, admins are allowed to perform any modification on the data, users are only allowed to view (books, authors, publishers) and to view and modify their user account.

DEV SBL_000001_A04 Merge contributions

A new Spring-BookLibrary version 0.0.0-A04 has to be prepared to merge the following contributions:

#4 DEV SBL_000001_A03 Introduce Lombok
#7 DEV SBL_000001_A03 Introduce Swagger documentation

Remember to update, according with the new version:

  • pom.xml
  • SwaggerConfig.java

The README.md should be updated to mention the documentation available on swagger-ui.html

DEV SBL_000001_A04 Upgrade swagger

Swagger must be updated to fix some startup errors.

Please modify the pom.xml so as to use:

  <dependency>
    	    <groupId>io.springfox</groupId>
    	    <artifactId>springfox-boot-starter</artifactId>
    	    <version>3.0.0</version>
  </dependency>

DEV SBL_000001_A02 User access management

I'm opening this issue to track the development activities related to the implementation of the User access management.

This development will introduce the user feature with related Controller, Service and Model classes and will introduce
the support for authentication.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.