A hobby CRUD project to explore modern web development using Spring Boot, React, and PostgreSQL. Users can browse and search a large collection of books by title, author, publisher, and rating.
Data was sourced from Kaggle: Goodreads Books Dataset and imported into PostgreSQL.
- Database name:
books-library - Table name:
booksid(primary key) (integer)title(text)authors(text)average_rating(real)isbn(varchar(10))isbn_13(varchar(13))language_code(varchar(5))num_pages(integer)ratings_count(integer)text_review_count(integer)publication_date(date)publisher(text)
The backend is built using Spring Boot and exposes a REST API:
Base URL: http://localhost:8080/api/v1/books
Query Parameters:
title— search by book titleauthor— search by author namepublisher— search by publisher namerating— returns books with rating >= specified valuepage— pagination (100 results per page, 0-indexed)
Search for string parameters is implemented based on "contains" relation.
Example: http://localhost:8080/api/v1/books?author=Rowling&rating=4&page=0
The frontend is built with React. Features:
- Search books by title
- Pagination/load more results (work in progress)
- Placeholder images for books (dataset doesn’t provide images)
To start backend, go into backend directory and type mvnw.cmd spring-boot:run (for windows, for other OS use equivalent command).
App will open on port 8080.
To start frontend, go into frontend directory and type npm start.
App will open on port 3000.

