Skip to content

A Full-Stack Developer using Java and MySQL builds secure, scalable web applications by combining strong backend architecture with relational database design and modern frontend integration. The role requires understanding system design, data modeling, API development, and performance optimization across the entire application lifecycle.

Notifications You must be signed in to change notification settings

DanielFonsecaa/LibraryManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

24 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


Logo

Bookstore Management Application

Book Management Simplified: Your Digital Partner for an Organized Library.

About The Project

Screenshot from 2024-09-06 12-51-03 Screenshot from 2024-09-06 12-51-17 Screenshot from 2024-09-06 12-51-33 Screenshot from 2024-09-06 12-52-02 Screenshot from 2024-09-06 12-52-08 Screenshot from 2024-09-06 12-52-36

This project is a Bookstore Management Application that demonstrates a full-stack web application integrating both back-end and front-end technologies. It is designed to manage a bookstore's inventory, allowing users to perform CRUD (Create, Read, Update, Delete) operations on books via a user-friendly interface. The application is built using a combination of modern Java-based backend frameworks and dynamic JavaScript-based front-end technologies.

--Features

Book Inventory Management: Users can view, add, edit, and delete books from the inventory.

Search Functionality: Users can search for books based on various criteria, such as title, author, year, or ISBN.

Responsive Design: The front-end is fully responsive and works seamlessly across various devices and screen sizes, providing a consistent user experience.

Dynamic Updates: The front-end uses JavaScript to dynamically fetch and update data without requiring full page reloads.

RESTful API Integration: The front-end interacts with the back-end through a REST API, making the system scalable and adaptable for future integrations.

🀷🏼 Usage

πŸ“ƒ Main Page

When you access the application, you are presented with a list of all books in the database.

--Key Features:

View Book Details: Click on any book in the list to navigate to its detailed view.

--Search for Books:

Use the search bar on the main page to filter books by:

Title, Author, Year, ISBN, Publisher

Partial information is acceptable, the search will filter books that contain the search term in any of these fields.

--Sort and Filter Options:

Sort by Title (A-Z): Click the "Order A-Z" button to organize the book list alphabetically by title.

Filter by Genre: Use the "Filter by Genre" dropdown to display only books that match the selected genre.

Reset to Default: Click the "Default" button to clear all filters and return to the original book list.

--Add a New Book:

Click on the "Add New Book" button on the bottom right.

Fill out all required fields, including: Title, Author, Year, ISBN, Publisher, Year Published, Price, Genre, Image URL and Synopsis

Submit the form to add the new book to the database.

πŸ•΅πŸΌβ€β™‚οΈ Book Detail Page

On the book detail page, you can manage individual book records.

--Key Features:

Edit Book:

Click the pen icon to edit the book's details. Make changes and save them to update the book information.

Delete Book: Click the trash can icon to delete the book. Note: A book can only be deleted if it has 0 units in stock.

Navigate Back: Click the arrow icon or the logo at the top left to return to the main page.

🧭 Navigation

Main Page: Displays all books and provides options to search and add new books. Book Detail Page: Allows you to view, edit, or delete individual book records.

--Additional Information

Development Stage: The application currently uses a test database located in the resources folder. This setup is for development purposes and does not affect the production environment.

πŸͺš Built With

Back-End

Java: Core language for backend development.

Spring MVC: Manages the web layer and provides RESTful APIs for CRUD operations on the book inventory.

Hibernate: Handles database operations and maps Java objects to a MySQL relational database.

Thymeleaf: Renders server-side HTML views when needed.

Maven: Manages dependencies and builds the project.

Tomcat: Serves as the web server to deploy the application.

Front-End

JavaScript: Fetches data from the backend API, handles user interactions, and dynamically updates the UI.

HTML: Defines the structure of web pages.

CSS: Styles and layouts web pages.

FontAwesome: Provides icons for enhanced UI.

βœ”οΈ Prerequisites

JDK 8 or higher: Check installation with: java -version in your terminal.

Apache Maven: Verify installation with: mvn -version also in your terminal.

MySQL: Ensure MySQL is installed and running.

Check the version with:mysql --version

Check the service status with:sudo systemctl status mysql

Apache Tomcat: Ensure Tomcat is installed and configured. Open a web browser and go to http://localhost:8080. You should see the Tomcat welcome page.

βš™οΈ Installation

These installations are only for LINUX

To install JDK 8 or 11:

sudo apt install openjdk-8-jdk // For OpenJDK 8

sudo apt install openjdk-11-jdk // For OpenJDK 11

To install Maven:

sudo apt update

sudo apt install maven

To install MySQL:

sudo apt update

sudo apt install mysql-server

To install Tomcat: Go to the Tomcat download page https://tomcat.apache.org/download-90.cgi and download the binary distribution (usually a .tar.gz file) for Linux. Replace 9.x.xx with the version number you downloaded. Open Terminal and navigate to the directory where you downloaded the file. Extract it:

tar xzf apache-tomcat-9.x.xx.tar.gz

tar: The command to extract archive files. -x: Option for extraction. -v: Option for verbose output (optional). -f: Option to specify the archive filename.

Move the extracted directory to /opt or another preferred location:

sudo mv apache-tomcat-9.x.xx /opt/tomcat

Navigate to the Tomcat configuration directory:

cd ~/tomcat/conf

Edit the tomcat-users.xml file:

Open tomcat-users.xml using a text editor (e.g., vim): sudo vim tomcat-users.xml

Add the following lines at the end of the file:

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui,manager-script"/>

Create the settings.xml file (if it doesn't exist): touch ~/.m2/settings.xml

Edit the settings.xml file: Open settings.xml using a text editor (e.g., vim): vim ~/.m2/settings.xml

Add the following content:

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<!--INSERT SERVER AUTHENTICATION INFORMATION HERE -->
<server>
<id>tomcat</id>
<username>tomcat</username>
<password>tomcat</password>
</server>
</servers>
</settings>

Change the Username and Password to what you want.

Installing DOCKER

sudo apt update

sudo apt install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt update

sudo apt install docker-ce

sudo systemctl status docker

πŸ§‘πŸΌβ€πŸ”§ Getting Started

#With DOCKER

Ensure Docker Daemon is Running

sudo systemctl status docker

If the Docker daemon is not running, you can start it with:

sudo systemctl start docker

Pull the Latest Images

docker pull simbolado/bookstore-app:latest

docker pull simbolado/fe-book:latest

Run Docker Compose file that is on the root of this project

docker-compose up -d

Go to google and type on the url: http://localhost/


#With TomCat Clone this repository git clone

https://github.com/DanielFonsecaa/LibraryManager

Start the MySQL service:

sudo systemctl start mysqld

Start Tomcat:

sudo ./path/to/tomcat/startup.sh

Or, if you are already in the Tomcat directory:

sudo ./startup.sh

In your IDE terminal, inside the project directory, use: mvn tomcat7:deploy to clean: mvn clean to undeploy mvn tomcat7:undeploy to redeploy mvn tomcat7:redeploy

πŸ—ΊοΈ Roadmap

  • Setup Environment Backend

  • Database Schema

  • Develop REST APIs

  • Integrate Hibernate

  • Integration with Backend

  • Documentation

  • Setup Environment Frontend

  • Main Page Development

  • Book Detail Page Development

  • Implement Search Functionality

  • Responsive Design

  • Bug Fixes and Refinements

  • Setup Deployment Environment

  • Parameterized Routes

  • Production Launch

  • Feature Enhancements

About

A Full-Stack Developer using Java and MySQL builds secure, scalable web applications by combining strong backend architecture with relational database design and modern frontend integration. The role requires understanding system design, data modeling, API development, and performance optimization across the entire application lifecycle.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published