Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/edsonwade/library-management-system

The Library Management System is a web application built using Spring Boot that allows users to manage books, members, and checkouts.
https://github.com/edsonwade/library-management-system

docker-compose flyway-migrations java11 jpa-hibernate maven postgresql restapi springboot testing

Last synced: about 15 hours ago
JSON representation

The Library Management System is a web application built using Spring Boot that allows users to manage books, members, and checkouts.

Awesome Lists containing this project

README

        

# ๐Ÿ“š Library Management System

## Description

The Library Management System is a web application built using Spring Boot that allows users to manage books, members,
and checkouts. It provides features to add, update, and delete books and members, track overdue books, and search for
books and members.

## Features

- ๐Ÿ“š **Manage Books**: Add, update, and remove books.
- ๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘ **Manage Members**: Add, update, and remove library members.
- ๐Ÿ“… **Checkout Management**: Check in and check out books.
- โณ **Overdue Tracking**: Identify and list books that are overdue.
- ๐Ÿ” **Search Functionality**: Search for books and members by name or title, and view books checked out by specific
members.

## Project Structure

The project follows Agile methodology, with the following structure:

- **Sprint 1:** Project setup and initial implementation.
- **Sprint 2:** Member management and book issuing.
- **Sprint 3:** Fine management and reporting.
- **Sprint 4:** Search functionality and final integrations.
- **Sprint 5:** Testing and deployment.

## Technologies Used

- **Java**: Programming language โ˜•
- **Spring Boot**: Framework for building the application ๐Ÿš€
- **PostgreSQL**: Database for data storage ๐Ÿ—„๏ธ
- **Flyway**: Database migration tool ๐Ÿ”„
- **JUnit**: Testing framework ๐Ÿงช

## Installation

### Prerequisites

- Java 11 or higher โ˜•
- PostgreSQL ๐Ÿ—„๏ธ
- Maven ๐Ÿ“ฆ

### Steps

1. Clone the repository:
```bash
git clone https://github.com/edsonwade/library-management-system.git
```
2. Navigate to the project directory
```bash
cd library-management-system
```
3. Update src/main/resources/application.properties with your PostgreSQL credentials.
4. Install dependencies and run the application:
```bash
mvn clean install
mvn spring-boot:run
```
5. Access the application at http://localhost:8080.

### Usage

## API Endpoints

- **Add a Book**
1. Endpoint: POST /api/books
2. Request Body**:

````json
{
"title": "Book Title",
"author": "Author Name",
"isbn": "ISBN Number",
"genre": "Genre",
"publishedDate": "YYYY-MM-DD",
"availability": true
}
````
- **Search Books**
1. Endpoint: GET /api/books/search?query={query}
2. Response:

````json
[
{
"id": 1,
"title": "Book Title",
"author": "Author Name",
"isbn": "ISBN Number",
"genre": "Genre",
"publishedDate": "YYYY-MM-DD",
"availability": true
}
]
````

- **Check Out a Book**
1. Endpoint: POST /api/checkouts
2. Response:

````json
{
"bookId": 1,
"memberId": 1
}
````

### Testing

- **To run the tests, use the following Maven command**:

```bash
mvn test
````

### Acknowledgements

- **Spring Boot**: For the framework ๐Ÿš€
- **PostgreSQL**: For the database ๐Ÿ—„๏ธ
- **Flyway Migration**: For database migration ๐Ÿ”„
- **Mockito**: For testing ๐Ÿงช

## Branch Naming Conventions

- **Feature Branches**: `feature/short-description`
- **Bug Fixes**: `bugfix/short-description`
- **Hotfixes**: `hotfix/short-description`
- **Release Branches**: `release/version-number`
- **Development Branches**: `develop`

### Contributing

1. Fork the repository ๐Ÿด
2. Create a new branch (git checkout -b feature-branch) ๐ŸŒฟ
3. Commit your changes (git commit -am 'Add new feature') โœ๏ธ
4. Push to the branch (git push origin feature-branch) ๐Ÿ“ค
5. Create a new Pull Request ๐Ÿ“ฉ
Please read [CONTRIBUTING.md](link-to-contributing-file) for details on how to contribute to this project.๐Ÿค

### Contact

For questions or feedback, please reach out to:

- **GitHub**: edsonwade ๐Ÿฑ

### License

This project is licensed under the [MIT License](https://opensource.org/licenses/MIT).๐Ÿ“.