3 people team (Raveen Pereira: front-end, Ankit Rajput & me: backend)
The Library Management System provides a simple yet elegant user interface to patrons and librarians, achieved using Google’s Material Design guidelines and principles, a Model-View-Controller Architecture implemented using Spring-boot.
For the librarian, our application provides the following functionality:
-
Ability to add books, recording their location, call number, number of copies, along with book details.
-
Update book information after adding the book.
-
Use ISBN to look up a book’s information to facilitate recording book details, achieved by Google Books API, retrieve a list of books added by a particular librarian.
-
The ability to search for a book based on the following criteria: book title, keywords, publish year, published, and author.
-
Automatically sign-up as a librarian by using SJSU email.
-
Set date and time to check the following functionality: renew books, calculate fine, send reminders.
For the patron, we implemented the following functionality:
-
The ability to add multiple books to cart, check them out, and return them.
-
The ability to enroll in multiple books’ waitlist.
-
The ability to reserve a book for 3 days after the book’s waitlist clears.
-
The ability to renew book twice if there is not waitlist
-
Email notification for registration, book checkouts, book returns and book reservation.
-
Daily Email reminders to return a book which is due within from 5 days.
Important concepts learned throught the project:
-
Using Spring Boot to implement concepts such as Dependency Control, Aspect oriented programming, Object-Relational Mapping, Model-View-Controller pattern.
-
Mapping multiplicity between entities to get the required data without writing complex queries.
-
Using Scheduling to schedule time change and return-date checking in the background, making these processes run on separate threads to improve efficiency.
-
Integrating Mail notifications in the project to send alerts and reminders to the user.
-
Using Interceptors for intercepting requests to check them for authorization.
-
Using controller advice AOP concept to provide Exception handling throughout the application without rewriting code.
Librarian adding a book by searching ISBN: