Skip to content

sumanbisunkhe/inventory-control-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏒 Inventory Control System

Spring Boot Java License JWT

Your Complete Solution for Smart Inventory Management

🎯 Overview β€’ πŸ”„ Workflow β€’ 🌟 Features β€’ πŸ’» Tech Stack β€’ πŸ“¦ Installation β€’ πŸ“– Documentation β€’ πŸ‘¨β€πŸ’» Author

🎯 Overview

The Inventory Control System is a dependable and efficient solution designed to simplify inventory management. It offers a range of features, including real-time tracking of products and orders, ensuring seamless and effective inventory operations.

The process begins with the OWNER registering their inventory in the system. Upon successful registration, the owner receives a welcome email confirming their registration. Once registered, the owner can add suppliers to the system. Next, products are added to the inventory and linked to their respective suppliers. If the quantity of any product falls to or below the minimum stock level, the system automatically notifies the owner via email about the issue. To replenish stock, the owner can place an order with the relevant supplier directly through the system. Once an order request is made, the supplier is notified via email and fulfills the request according to the owner’s requirements.

This streamlined process ensures that inventory is managed efficiently, minimizing stockouts and facilitating smooth operations for the owner. The Inventory Control System is a comprehensive tool for effective inventory management.

πŸ”„ Operational Workflow

πŸ“οΈ 1. Registration

  • πŸ–Š Business Owner Registration
    • Quick and easy system registration
    • Welcome email confirmation
    • Secure account setup

🀝 2. Supplier Management

  • πŸ‘₯ Multi-Supplier Integration
    • Seamless supplier onboarding
    • Comprehensive contact database
    • Automated supplier communications
    • Smart product-supplier mapping

πŸ“Š 3. CSV Operations

  • πŸ“₯ Data Import/Export
    • Bulk product upload
    • Supplier data import
    • Inventory export
    • Template-based processing

πŸ“¦ 4. Product Management

  • 🏷️ Inventory Control
    • Intuitive product addition
    • Supplier linkage system
    • Real-time quantity tracking
    • Supplier-based categorization

⚑ 5. Smart Notifications

  • πŸ”” Automated Alerts
    • Continuous stock monitoring
    • Low-stock threshold alerts
    • Instant email notifications
    • Supplier update system

πŸ“‹ 6. Order Processing

  • πŸ”„ Streamlined Ordering
    • One-click order placement
    • Intelligent supplier routing
    • Automated order notifications
    • Customized delivery management

🌟 Features

πŸ” Security & Access

  • JWT-based authentication
  • Role-based access control
  • Secure API endpoints
  • Structured error handling

πŸ“¦ Core Functions

  • Complete product CRUD operations
  • Real-time inventory tracking
  • Order lifecycle management
  • Supplier relationship management

πŸ”„ Data Management

  • Bulk CSV import/export
  • Real-time notifications
  • Data validation
  • Automated testing suite

⚑ Development

  • Hot reload support
  • Comprehensive logging
  • Error tracking
  • DevOps-ready configuration

πŸ’» Tech Stack

Core Framework & Security

graph LR
    A[Spring Boot] --> B[Spring Security]
    B --> C[JWT Authentication]
    A --> D[Spring Data JPA]
Loading

Key Components

  • Database: MySQL / PostgreSQL
  • Authentication: JWT with Spring Security
  • Documentation: Postman
  • Testing: JUnit, Mockito
  • Utilities: Lombok, ModelMapper
  • Validation: Jakarta Validation API

πŸ“¦ Installation

Prerequisites

  • Java 17+
  • Maven 3.6+
  • MySQL

πŸš€ Getting Started

  1. Clone Repository
git clone https://github.com/sumanbisunkhe/inventory-control-system.git
cd inventory-control-system
  1. Configure Database Create application.properties:
    spring.application.name=inventory-control-system
           
    # MySQL Database Configuration
    spring.datasource.url=jdbc:mysql://localhost:3306/inventory_control_system_db
    spring.datasource.username=your_username
    spring.datasource.password=your_password
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
           
    # Hibernate JPA Configuration
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.show-sql=true
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
           
    # Other Spring Boot Settings
    server.port=8080
    spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS=false
           
           
    # ========== JWT Configuration ==========
    jwt.secret=0oaP4MrLeRXkmISd9HXo6Eth90udQMvCICrKbaAfqbE=
           
    # ========== Logging Configuration ==========
    logging.level.org.hibernate.SQL=DEBUG
    logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
           
    # ====== Mail Configuration ======
    spring.mail.host=smtp.gmail.com
    spring.mail.port=587
    spring.mail.username=you_email
    spring.mail.password=your_email_app_password
    spring.mail.properties.mail.smtp.auth=true
    spring.mail.properties.mail.smtp.starttls.enable=true
  1. Build & Run
mvn clean install
mvn spring-boot:run

πŸ—‚οΈ Project Structure

inventory-management-system/
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main/
β”‚   β”‚   β”œβ”€β”€ java/
β”‚   β”‚   β”‚   └── com/
β”‚   β”‚   β”‚       └── example/
β”‚   β”‚   β”‚           └── inventory/
β”‚   β”‚   β”‚               β”œβ”€β”€ config/
β”‚   β”‚   β”‚               β”‚   └── SecurityConfig.java
β”‚   β”‚   β”‚               β”‚ 
β”‚   β”‚   β”‚               β”œβ”€β”€ controller/
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ AuthController.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ CsvController.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ OrderController.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ ProductController.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ SupplierController.java
β”‚   β”‚   β”‚               β”‚   └── UserController.java
β”‚   β”‚   β”‚               β”‚
β”‚   β”‚   β”‚               β”œβ”€β”€ dto/
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ OrderDto.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ ProductDto.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ SupplierDto.java
β”‚   β”‚   β”‚               β”‚   └── UserDto.java
β”‚   β”‚   β”‚               β”‚
β”‚   β”‚   β”‚               β”œβ”€β”€ enums/
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ Category.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ OrderStatus.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ RoleName.java
β”‚   β”‚   β”‚               β”‚   └── Status.java
β”‚   β”‚   β”‚               β”‚
β”‚   β”‚   β”‚               β”œβ”€β”€ exceptions/
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ CsvlmportException.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ GlobalExceptionHandler.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ JwtTokenException.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ OrderNotFoundException.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ ProductNotFoundException.java
β”‚   β”‚   β”‚               β”‚   └── SupplierNotFoundException.java
β”‚   β”‚   β”‚               β”‚
β”‚   β”‚   β”‚               β”œβ”€β”€ model/
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ Order.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ Product.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ Role.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ Supplier.java
β”‚   β”‚   β”‚               β”‚   └── User.java
β”‚   β”‚   β”‚               β”‚
β”‚   β”‚   β”‚               β”œβ”€β”€ repo/
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ OrderRepo.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ ProductRepo.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ RoleRepo.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ SupplierRepo.java
β”‚   β”‚   β”‚               β”‚   └── UserRepo.java
β”‚   β”‚   β”‚               β”‚
β”‚   β”‚   β”‚               β”œβ”€β”€ security/
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ AuthenticationRequest.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ AuthenticationResponse.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ JwtRequestFilter.java
β”‚   β”‚   β”‚               β”‚   └── JwtUtil.java
β”‚   β”‚   β”‚               β”‚
β”‚   β”‚   β”‚               β”‚
β”‚   β”‚   β”‚               β”œβ”€β”€ service/
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ impl/
β”‚   β”‚   β”‚               β”‚   β”‚   β”œβ”€β”€ EmailServiceImpl.java
β”‚   β”‚   β”‚               β”‚   β”‚   β”œβ”€β”€ OrderServiceImpl.java
β”‚   β”‚   β”‚               β”‚   β”‚   β”œβ”€β”€ ProductServiceImpl.java
β”‚   β”‚   β”‚               β”‚   β”‚   β”œβ”€β”€ SupplierServiceImpl.java
β”‚   β”‚   β”‚               β”‚   β”‚   └── UserServiceImpl.java
β”‚   β”‚   β”‚               β”‚   β”‚
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ EmailService.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ OrderService.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ ProductService.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ SupplierService.java
β”‚   β”‚   β”‚               β”‚   └── UserService.java
β”‚   β”‚   β”‚               β”‚   
β”‚   β”‚   β”‚               β”œβ”€β”€ utils/
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ CsvUtils.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ CustomCustomerDetailsService.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ CustomEmailMessage.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ Databaselnitializer.java
β”‚   β”‚   β”‚               β”‚   β”œβ”€β”€ KeyGenerator.java
β”‚   β”‚   β”‚               β”‚   └── Rolelnitializer
β”‚   β”‚   β”‚               β”‚ 
β”‚   β”‚   β”‚               └── InventoryManagementSystemApplication.java
β”‚   β”‚   └── resources/
β”‚   β”‚       β”œβ”€β”€ docs/
β”‚   β”‚       β”‚   └── Inventory Control System API Documentation.pdf
β”‚   β”‚       └── application.properties
β”‚   β”‚       
β”‚   └── test/
β”‚       └── java/
β”‚           └── com/
β”‚               └── example/
β”‚                   └── inventory/
β”‚                       β”œβ”€β”€ controller/
β”‚                       β”‚   β”œβ”€β”€ AuthControllerTest.java
β”‚                       β”‚   β”œβ”€β”€ CsvControllerTest.java
β”‚                       β”‚   β”œβ”€β”€ OrderControllerTest.java
β”‚                       β”‚   β”œβ”€β”€ ProductControllerTest.java
β”‚                       β”‚   β”œβ”€β”€ SupplierControllerTest.java
β”‚                       β”‚   └── UserControllerTest.java
β”‚                       β”‚ 
β”‚                       β”œβ”€β”€ service/
β”‚                       β”‚   β”œβ”€β”€ EmailServicelmplTest.java
β”‚                       β”‚   β”œβ”€β”€ OrderServicelmplTest.java
β”‚                       β”‚   β”œβ”€β”€ ProductServicelmplTest.java
β”‚                       β”‚   β”œβ”€β”€ SupplierServicelmplTest.java
β”‚                       β”‚   └── UserServicelmplTest.java   
β”‚                       β”‚
β”‚                       └── InventoryManagementSystemApplicationTests.java
β”‚   
β”‚   
β”œβ”€β”€ LICENSE  
β”œβ”€β”€ mvnw  
β”œβ”€β”€ mvnw.cmd  
β”œβ”€β”€ pom.xml
└── README.md

πŸ”§ Core Dependencies

CategoryDependencies
Core
  • spring-boot-starter-web
  • spring-boot-starter-data-jpa
  • spring-boot-starter-security
Security
  • jjwt-api
  • jjwt-impl
  • jjwt-jackson
Database
  • mysql-connector-j
  • postgresql
Utilities
  • lombok
  • modelmapper
  • commons-csv

πŸ“– Documentation

πŸ“š Available Documentation Formats

Format Description Link
PDF Comprehensive system architecture and API reference View PDF
Postman Interactive API documentation with examples View in Postman

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ‘¨β€πŸ’» Author

Author Avatar

Suman Bisunkhe

Java Developer

GitHub Email

πŸ“„ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.


Made with ❀️ by Suman Bisunkhe

About

Inventory Control System is an inventory management application that revolutionizes inventory management through intelligent real-time tracking of products, suppliers, and orders

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages