final-project-final-group-12 created by GitHub Classroom
!!!!!!!! Front end is in react branch and backend is in main branch !!!!!!!!!!!! video : https://github.com/CSYE6200-Object-Oriented-DesignFall2023/final-project-final-group-12/blob/main/Team_12_OOD_Final_Project.mp4
- Zeel Patel
- Yash Zaveri
- Smit Patel
- Sparsh Sanghavi
- Sandeep Kumar
- Shubham Mangaonkar --
- SpringBoot (A Java Framework for backend)
- React (A JavaScript Framework for frontend)
- MySQL (Database)
Husky Gujju Library is a Library Management System that allows seamless management of the book inventory. The system has two kinds of users:
- Administrator
- Student
The prime difference between the two users is the set of privileges they hold.
An administrator is the most privileged user of the system. They can only be registered manually by entering the appropriate credentials in the database. The administrator can add books to the system and assign books to a student, ensuring that assignments occur only if the student and book are present in the database, and the available quantity of the book is non-zero. Appropriate errors are thrown if the criteria are not fulfilled.
A student is the least privileged user of the system. They can only view their own profile, which shows their first name, last name, email, and ID, along with the books assigned to them by an administrator.
- Demo1Application.java: This class serves as the entry point for the Spring Boot application. It contains the main method, which is the starting point for the application.
-
AdminController.java: Handles login functionality for Administrators. Leverages an
AdminServiceFactory
inner class, which interacts with the database to fetch credentials. -
BookController.java: Provides features to add a book to the database and assign books to a student. Utilizes Stream API, Lambda Functions,
BooksServiceFactory
, and Comparator for sorting available books. -
StudentController.java: Handles student registration and login functionality. Relies on
BooksServiceFactory
to fetch essential student information.
-
Admin.java: Responsible for creating the 'admin_table' in the Database.
-
AssignBooks.java: Responsible for creating the 'assigned_book_table' in the Database.
-
Book.java: Responsible for creating the 'book_table' in the Database.
-
Student.java: Responsible for creating the 'student_table' in the Database.
-
BooksServiceFactory.java: Incorporates Lazy Singleton Factory Pattern. Provides methods such as
getBook()
,assignBook()
, andfindAllBook()
. -
StudentServiceFactory.java: Incorporates Lazy Singleton Factory Pattern. Provides methods such as
createStudentObj()
and incorporates exception handling.
-
AdminRepo.java: Provides an interface
AdminRepo
for the methodfindByAdminemail()
, extendingJpaRepository
for ORM functionalities. -
AssignBooksRepo.java: Provides an interface
AssignBooksRepo
for the methodfindByStudentId()
, extendingJpaRepository
. -
BookRepo.java: Provides an interface
BookRepo
, extendingJpaRepository
. -
StudentRepo.java: Provides an interface
StudentRepo
for the methodfindByEmail()
, extendingJpaRepository
.
-
AdminService.java: Provides functionality to add an admin and verify admin credentials, indirectly used by
AdminController
. -
BooksService.java: Provides functionality to add a book, assign a book by establishing necessary checks, and throwing errors if necessary. Indirectly used by
BookController
. -
StudentService.java: Provides functionality to add a student and verify student credentials, indirectly used by
StudentController
.
- Download and install Eclipse.
- Launch Eclipse, click on the Help tab, then Eclipse Marketplace. Search for Spring Tools 4 (aka Spring Tool Suite 4) and install it.
- Download node.js from here. Run the installer with default settings.
- Download and install MySQL workbench with default settings. When prompted to create a user, use 'root' for username and 'root' for password. Port is set to 3306.
- Launch MySQL workbench, double click on 'local instance' under MySQL Connections, enter root for username and password. In the Navigator, right-click and select 'Create Schema'. Name the schema as 'library'.
- For cloning the project repo, there are two branches:
- The main branch contains the SpringBoot code.
- The react branch contains the Frontend code.
- Clone the main branch, create a new folder named frontend, clone the react branch in the frontend folder, and move it to the location
final-project-final-group-12\src\main\
. - Open the project in Eclipse, navigate to
final-project-final-group-12\src\main\java\edu\neu\csye6200\Demo1Application.java
, and click on the Run button. If prompted, select Run as a SpringBoot Application. - Open the terminal and navigate to
final-project-final-group-12\src\main\frontend\
. - Run
npm start
. - The project is now up and running!
- Zeel Patel: assignBook API ,studentBook API, addBook API, factory implementation, sorting using strean api
- Yash Zaveri: adminVerify API,searchStudentBook API, testing
- Sparsh Sanghavi: addStudent API, loginstudent API, studentProfile API, inner class ,lambda
- Smit Patel: ForntEnd in React and integration of frontend and backend and FindAllBook API
- Sandeep Kumar: addAdmin API , testing , readmeFile
- Shubham Mangaonkar: Fornt End, exception handling