Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/krispyarena/inventory-mgmt-system
https://github.com/krispyarena/inventory-mgmt-system
Last synced: 18 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/krispyarena/inventory-mgmt-system
- Owner: krispyarena
- Created: 2024-11-20T07:12:20.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-11-22T16:52:37.000Z (about 1 month ago)
- Last Synced: 2024-11-22T17:30:10.843Z (about 1 month ago)
- Language: Java
- Size: 7.81 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Inventory Management System (IMS)
## Overview
The **Inventory Management System (IMS)** is a Spring Boot-based application designed to manage inventory records, including products, suppliers, and orders. The application allows users to manage their inventory through a secure REST API.
This project is built with Spring Boot, Spring Security, JWT authentication, Hibernate, MySQL, and Swagger for API documentation.
## Features
- **User Authentication & Authorization**: Secure login and role-based access control using JWT.
- **Product Management**: Manage products with CRUD operations (Create, Read, Update, Delete).
- **Supplier Management**: Add, update, and view supplier details.
- **Order Management**: Create and manage orders.
- **Swagger Documentation**: Auto-generated API documentation for easy testing and exploration.
- **Security**: Role-based access control to ensure only authorized users can access specific resources.## Tech Stack
- **Backend**: Java, Spring Boot, Spring Security, JWT, Hibernate, JPA
- **Database**: MySQL
- **API Documentation**: Swagger 2
- **Build Tool**: Maven
- **Other Libraries**: Lombok, BCryptPasswordEncoder, H2 Database (for testing)## Installation
Follow these steps to set up and run the Inventory Management System locally:
### 1. Clone the repository
```bash
git clone https://github.com/krispyarena/inventory-management-system.git
cd inventory-management-system
```
## 2. Configure Database
Ensure you have MySQL installed and create a database for the project (e.g., ivms).```bash
CREATE DATABASE ivms;
```In application.properties, update the database credentials:
```bash
spring.datasource.url=jdbc:mysql://localhost:3306/ivms
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
```## API Endpoints :
[Click here for API documentation](https://docs.google.com/document/d/1sSzEAdXWvHfOnMsfdNdbddxw2ULgtucxD3SKmKWquYw/edit?usp=sharing)## Authentication
The system uses JWT (JSON Web Token) for authentication and authorization. Upon successful login, a JWT token is generated and must be included in the Authorization header as Bearer for accessing protected endpoints.
## Swagger UI
Swagger UI is available at http://localhost:8080/swagger-ui.html. Use it for easy testing of API endpoints and checking the API documentation.
## Security
### Roles:
- ADMIN: Full access to all resources.
- SELLER: Access to product management and order creation.
- USER: Access to viewing orders.
- JWT Authentication: All protected endpoints require a valid JWT token in the Authorization header.
### Contribution
Contributions are welcome! Please follow these steps to contribute to this project:
- Fork the repository.
- Create a new branch (git checkout -b feature-name).
- Commit your changes (git commit -am 'Add new feature').
- Push to the branch (git push origin feature-name).
- Open a pull request.### License
This project is licensed under the MIT License - see the LICENSE file for details.
### Acknowledgments
Special thanks to Spring Boot, Spring Security, MySQL, and Swagger for making this project possible.
All contributions to the project are appreciated!### Key Features:
- The `README.md` provides detailed instructions on setting up the project, running it locally, and interacting with the API.
- It includes information about each endpoint, authentication, and the role-based access control used in the system.
- The **Swagger UI** section is included to guide users to use the Swagger documentation effectively.