{"id":15055567,"url":"https://github.com/aleko-khomasuridze/productmanager","last_synced_at":"2026-01-02T07:09:35.886Z","repository":{"id":255511274,"uuid":"846970844","full_name":"aleko-khomasuridze/ProductManager","owner":"aleko-khomasuridze","description":"Product Manager Application - A JavaFX-based desktop application for managing product inventory, featuring CRUD operations, data validation, and a modular design with database integration. Perfect for small to medium-sized businesses looking to streamline their product management process.","archived":false,"fork":false,"pushed_at":"2024-09-23T13:24:32.000Z","size":117,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-21T00:36:53.402Z","etag":null,"topics":["crud","database","design-patterns","desktop","docker","java","javafx","sql"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aleko-khomasuridze.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-24T13:31:40.000Z","updated_at":"2024-09-23T13:24:35.000Z","dependencies_parsed_at":"2024-10-12T18:21:01.286Z","dependency_job_id":"22759d1e-9b1c-41f5-9ed0-91ea45de2afd","html_url":"https://github.com/aleko-khomasuridze/ProductManager","commit_stats":null,"previous_names":["aleko-khomasuridze/productmanager"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleko-khomasuridze%2FProductManager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleko-khomasuridze%2FProductManager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleko-khomasuridze%2FProductManager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aleko-khomasuridze%2FProductManager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aleko-khomasuridze","download_url":"https://codeload.github.com/aleko-khomasuridze/ProductManager/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243532532,"owners_count":20306152,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crud","database","design-patterns","desktop","docker","java","javafx","sql"],"created_at":"2024-09-24T21:44:32.715Z","updated_at":"2026-01-02T07:09:35.857Z","avatar_url":"https://github.com/aleko-khomasuridze.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Product Manager Application\n\n## Overview\n\nThe **Product Manager Application** is a JavaFX-based desktop application designed to manage a product inventory for small to medium-sized businesses. It provides a user-friendly interface for adding, editing, deleting, and viewing products. The application is built with modularity in mind, separating concerns between data access, business logic, and UI components.\n\n## Features\n\n- **Product Management**: Add, edit, delete, and view products in the inventory.\n- **Data Validation**: Ensure data integrity with input validation for numeric and decimal fields.\n- **Responsive UI**: A clean and intuitive interface built using JavaFX.\n- **Modular Design**: Separation of concerns across different layers (Controller, Service, DAO).\n- **Database Integration**: Persistent data storage using an SQL database.\n\n## Project Structure\n\nThe project is organized into the following packages:\n\n- **controller**: Contains the JavaFX controllers that manage UI interactions.\n  - `TableController.java`: Manages the product list and handles CRUD operations.\n  - `ProductEditController.java`: Manages the editing of existing products.\n  - `ProductAddController.java`: Manages the addition of new products.\n  \n- **service**: Contains the service classes that encapsulate business logic.\n  - `DatabaseService.java`: Handles database operations related to products.\n\n- **dao**: Data Access Object (DAO) classes responsible for direct database interaction.\n  - `ProductDAO.java`: Interface defining CRUD operations for products.\n  - `ProductDAOImpl.java`: Implementation of the `ProductDAO` interface.\n\n- **model**: Contains the data models used throughout the application.\n  - `Product.java`: Entity class representing a product in the inventory.\n  - `ProductDTO.java`: Data Transfer Object for transferring product data.\n\n- **util**: Utility classes that provide common functionality.\n  - `ConnectionUtil.java`: Manages database connections.\n  - `FXMLUtils.java`: Contains helper methods for configuring JavaFX components.\n\n- **alerts**: Contains custom alert dialogs.\n  - `ConfirmDialog.java`: Utility class for displaying confirmation dialogs.\n\n- **exception**: Custom exceptions for error handling.\n  - `DatabaseException.java`: Custom exception class for database-related errors.\n\n## Getting Started\n\n### Prerequisites\n\n- **Java Development Kit (JDK)** 8 or higher.\n- **JavaFX SDK** for running the JavaFX application.\n- **Maven** for dependency management and building the project.\n- **SQL Database** (e.g., MySQL, SQLite) for persistent data storage.\n\n### Installation\n\n1. **Clone the repository:**\n   ```bash\n   git clone https://github.com/aleko-khomasuridze/ProductManager.git\n   ```\n\n2. **Set up the database:**\n   - Configure your database connection in `DatabaseConfig.java`.\n   - Run the provided SQL script (if available) to set up the necessary tables.\n   - Follow the detailed instructions in `src/MySQL_Docker_Setup_README.md` to set up a MySQL database using Docker.\n\n3. **Build the project:**\n   ```bash\n   mvn clean install\n   ```\n\n4. **Run the application:**\n   ```bash\n   mvn javafx:run\n   ```\n\n### Usage\n\n1. **Adding a Product**: Click the \"Add New Product\" button, fill in the product details, and click \"Save.\"\n2. **Editing a Product**: Click the \"Edit\" button next to a product, modify the details, and click \"Save.\"\n3. **Deleting a Product**: Click the \"Delete\" button next to a product and confirm the deletion.\n4. **Viewing Products**: The main table displays all products with their details.\n\n### Customization\n\n- **Styling**: Customize the UI by modifying the FXML files and associated CSS files.\n- **Business Logic**: Add or modify business logic by editing the service classes.\n- **Database Configuration**: Adjust the database connection settings in `DatabaseConfig.java`.\n\n## Contributing\n\nContributions are welcome! Please fork this repository and submit a pull request with your changes.\n\n## Acknowledgments\n\n- Thanks to the JavaFX community for providing an excellent UI framework.\n- Inspired by real-world product management systems and inventory tools.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faleko-khomasuridze%2Fproductmanager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faleko-khomasuridze%2Fproductmanager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faleko-khomasuridze%2Fproductmanager/lists"}