{"id":31908246,"url":"https://github.com/elyeandre/bookhaven-ebookstore","last_synced_at":"2025-10-13T15:25:53.401Z","repository":{"id":316200380,"uuid":"1062348922","full_name":"elyeandre/bookhaven-Ebookstore","owner":"elyeandre","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-23T07:42:56.000Z","size":1999,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-09-23T09:26:08.731Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/elyeandre.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-23T06:25:12.000Z","updated_at":"2025-09-23T07:42:59.000Z","dependencies_parsed_at":"2025-09-23T15:01:09.242Z","dependency_job_id":null,"html_url":"https://github.com/elyeandre/bookhaven-Ebookstore","commit_stats":null,"previous_names":["elyeandre/bookhaven-ebookstore"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/elyeandre/bookhaven-Ebookstore","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elyeandre%2Fbookhaven-Ebookstore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elyeandre%2Fbookhaven-Ebookstore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elyeandre%2Fbookhaven-Ebookstore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elyeandre%2Fbookhaven-Ebookstore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elyeandre","download_url":"https://codeload.github.com/elyeandre/bookhaven-Ebookstore/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elyeandre%2Fbookhaven-Ebookstore/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279015918,"owners_count":26085778,"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","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2025-10-13T15:25:52.219Z","updated_at":"2025-10-13T15:25:53.387Z","avatar_url":"https://github.com/elyeandre.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📚 BookHaven Online Bookstore\n\n[![Made With Java][made-with-java]][forthebadge-url]\n[![Built With Love][built-with-love]][forthebadge-url]\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-issues-url]\n\nA comprehensive **desktop application** built with Java Swing that provides a complete online bookstore experience. This academic project demonstrates enterprise-level software development practices for book inventory management, user authentication, shopping cart functionality, and order processing with integrated voucher system.\n\n## 📋 Table of Contents\n- [🎯 Project Overview](#-project-overview)\n- [✨ Key Features](#-key-features)\n- [🛠️ Tech Stack](#️-tech-stack)\n- [🏗️ Architecture](#️-architecture)\n- [📁 Project Structure](#-project-structure)\n- [🚀 Quick Start](#-quick-start)\n- [⚙️ Configuration](#️-configuration)\n- [📱 Usage Guide](#-usage-guide)\n- [:lock: Security Notes](#security-notes)\n- [🧪 Testing](#-testing)\n- [🚀 Deployment](#-deployment)\n- [🤝 Contributing](#-contributing)\n- [📄 License](#-license)\n- [:camera_flash: Screenshots](#screenshots)\n\n## 🎯 Project Overview\n\n**BookHaven** is a sophisticated desktop application that recreates the online bookstore experience in a rich graphical user interface. Built as an academic project using Java Swing and MySQL, it demonstrates modern software development principles while providing a fully functional e-commerce platform for book sales.\n\n### 🎯 Target Users\n- **📖 Book Readers / Customers**: Browse catalog, search, manage cart, apply vouchers, print a receipt\n\n\u003e Note: No dedicated admin UI or post‑checkout order history functionality is implemented.\n\n### 🌟 Problem Statement\nDeliver an academic demonstration of a basic bookstore purchasing flow (browse → cart → checkout → printable receipt) with simple voucher discount logic using Java Swing + MySQL.\n\n## ✨ Key Features\n\n### 📚 **Book Catalog Management**\n- **Catalog Display**: Grid-style list with cover thumbnails\n- **Search Filter**: Simple text filter (title/author/genre substring match)\n- **Book Details**: Author, publisher, genre, pages, price (shown in UI panels)\n- **Stock Field**: `stock_count` read only (no decrement logic on checkout)\n- **Cover Art**: Scaled images for presentation\n\n### 🛒 **Shopping Cart System**\n- **Add / Remove**: Manage selected books and quantity spinner\n- **Book Types**: Paperback vs Hardcover (Hardcover +15% price)\n- **Totals**: Recompute subtotal \u0026 discount when quantities or voucher change\n- **Cart Indicator**: Count \u0026 empty view state\n- **Checkout Trigger**: Opens inline panel for customer \u0026 voucher info\n\n### 🔐 **User Authentication \u0026 Profiles**\n- **Registration**: Username, email (basic format/Gmail check), birthday, password\n- **Login**: Plaintext credential check against DB record\n- **Profile Edit**: Update basic fields \u0026 password; avatar BLOB storage\n- **Validation**: Duplicate username/email detection; password strength helper\n- **Limitation**: No hashed passwords or persistent session management\n\n### 🎫 **Voucher \u0026 Discount System**\n- **In-Memory Codes**: Added at runtime (resets each launch)\n- **Validation**: Lookup + date check\n- **Discount Application**: Adjusts total at checkout view\n- **Scope**: Not persisted in DB\n\n### 📄 **Order Processing \u0026 Receipts**\n- **Order Summary**: Detailed breakdown of purchases and totals\n- **Payment Methods**: Multiple payment options (COD, Banking partners)\n- **Receipt Generation**: Professional receipt printing functionality\n- **Customer Information**: Delivery address and contact management\n- **Order Confirmation**: Complete transaction workflow\n\n### 🔍 **Advanced UI/UX Features**\n- **Custom Components**: Specialized UI elements (CustomComboBox, CustomSpinner)\n- **Responsive Design**: Adaptive layout for different screen sizes\n- **Visual Feedback**: Hover effects, button states, and animations\n- **Accessibility**: Keyboard navigation and focus management\n- **Error Handling**: User-friendly error messages and validation feedback\n\n## 🛠️ Tech Stack\n\n### **Core Technologies**\n- **Language**: Java 11+\n- **GUI Framework**: Java Swing with NetBeans GUI Builder\n- **Database**: MySQL 8.0.33 with JDBC connectivity\n- **Build Tool**: Apache Maven 3.x\n- **IDE**: NetBeans IDE (recommended)\n\n### **Java Libraries \u0026 Dependencies**\n- **MySQL Connector**: `mysql-connector-java:8.0.33`\n- **AbsoluteLayout**: NetBeans layout manager for precise component positioning\n- **Java AWT/Swing**: Core GUI components and event handling\n- **JDBC**: Database connectivity and SQL operations\n\n### **Development Tools**\n- **NetBeans GUI Builder**: Visual form designer for Swing interfaces\n- **Maven**: Dependency management and project building\n- **MySQL Workbench**: Database design and management\n- **Git**: Version control and collaboration\n\n### **Architecture Patterns**\n- **MVC Pattern**: Separation of Model (data), View (UI), Controller (logic)\n- **DAO Pattern**: Data Access Objects for database operations\n- **Observer Pattern**: Event-driven UI updates and notifications\n- **Singleton Pattern**: Database connection management\n\n## 🏗️ Architecture\n\n### **System Architecture**\n```\n┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐\n│  Presentation   │    │   Business      │    │   Data Layer    │\n│     Layer       │    │     Logic       │    │                 │\n│                 │    │                 │    │                 │\n│ ┌─────────────┐ │    │ ┌─────────────┐ │    │ ┌─────────────┐ │\n│ │    Swing    │ │    │ │   Models    │ │    │ │   MySQL     │ │\n│ │     UI      │◄├────┤►│   Classes   │◄├────┤►│  Database   │ │\n│ └─────────────┘ │    │ └─────────────┘ │    │ └─────────────┘ │\n│ ┌─────────────┐ │    │ ┌─────────────┐ │    │ ┌─────────────┐ │\n│ │   Event     │ │    │ │   Service   │ │    │ │    JDBC     │ │\n│ │  Handlers   │ │    │ │   Classes   │ │    │ │ Connection  │ │\n│ └─────────────┘ │    │ └─────────────┘ │    │ └─────────────┘ │\n└─────────────────┘    └─────────────────┘    └─────────────────┘\n```\n\n### **Database Schema**\n```sql\n-- Core Tables\nusers (user_id, username, password, email, profile_picture, birthday)\nbooks (book_id, title, author, publisher, description, size, genre, pages, languages, price, cover_image, stock_count)\n\n-- Relationships\n- Users can place multiple orders\n- Books have stock management\n- Orders contain multiple book items\n- Vouchers have expiration dates\n```\n\n### **Class Hierarchy**\n```\nBookHaven Application\n├── Init.java (Entry Point)\n├── Index.java (Authentication UI)\n├── MainMenu.java (Main Application Window)\n├── Models/\n│   ├── User.java (User data model)\n│   ├── Book.java (Book data model)\n│   └── BookItem.java (Cart item model)\n├── Services/\n│   ├── DatabaseConnection.java (DB connectivity)\n│   └── VoucherSystem.java (Discount management)\n├── UI Components/\n│   ├── CustomComboBox.java (Styled dropdown)\n│   ├── CustomSpinner.java (Number input)\n│   └── RoundedPanel.java (Custom panel)\n└── Utilities/\n    ├── Receipt.java (Print dialog)\n    ├── Invoice.java (Receipt generation)\n    └── Various Helper Classes\n```\n\n## 📁 Project Structure\n\n```\nbookhaven-ebookstore/\n├── 📄 pom.xml                        # Maven project configuration\n├── 📄 README.md                      # Project documentation\n├── 📄 nbactions.xml                  # NetBeans IDE actions\n├── 📁 lib/                           # External libraries\n│   └── unknown/binary/AbsoluteLayout/ # NetBeans layout library\n├── 📁 src/main/java/com/bookstore/casestudy/\n│   ├── 📄 Init.java                  # Application entry point\n│   ├── 📄 Index.java                 # Login/Registration window\n│   ├── 📄 MainMenu.java             # Main application interface\n│   ├── 📄 Splash.java               # Loading screen\n│   ├── 📄 DatabaseConnection.java    # Database connectivity\n│   ├── 📄 User.java                 # User data model\n│   ├── 📄 Book.java                 # Book data model\n│   ├── 📄 BookItem.java             # Shopping cart item\n│   ├── 📄 VoucherSystem.java        # Discount system\n│   ├── 📄 Receipt.java              # Receipt dialog\n│   ├── 📄 Invoice.java              # Receipt printing\n│   ├── 📄 InvoicePanel.java         # Receipt UI panel\n│   ├── 📄 CustomComboBox.java       # Styled dropdown component\n│   ├── 📄 CustomSpinner.java        # Custom number input\n│   ├── 📄 CustomRadioButton.java    # Styled radio button\n│   ├── 📄 RoundedPanel.java         # Custom panel with rounded corners\n│   ├── 📄 TextPrompt.java           # Input field placeholder\n│   ├── 📄 PasswordStrength.java     # Password validation\n│   ├── 📄 FocusTraversalUtils.java  # Keyboard navigation\n│   ├── 📄 ExitConfirmation.java     # Exit dialog\n│   └── 📄 NoResult.java             # Search empty state\n├── 📁 target/                        # Maven build output\n│   ├── 📁 classes/                   # Compiled Java classes\n│   └── 📁 maven-status/              # Build metadata\n└── 📁 resources/                     # Application resources\n    └── 📁 images/                    # UI icons and book covers\n```\n\n### **Key Components Explained**\n\n- **`Init.java`**: Application bootstrap with splash screen and Windows Look \u0026 Feel\n- **`Index.java`**: Authentication interface handling login and registration\n- **`MainMenu.java`**: Primary application window with book browsing, cart, and user management\n- **`DatabaseConnection.java`**: Simple helper for obtaining a JDBC connection (no pooling)\n- **Model Classes**: Data structures for User, Book, and BookItem entities\n- **Custom UI Components**: Enhanced Swing components with custom styling and behavior\n\n## 🚀 Quick Start\n\n### **Prerequisites**\n- Java Development Kit (JDK) 11 or higher\n- MySQL Server 8.0 or higher\n- Apache Maven 3.6+\n- NetBeans IDE (recommended) or any Java IDE\n\n### **Installation**\n\n1. **Clone the Repository**\n   ```bash\n   git clone https://github.com/elyeandre/bookhaven-Ebookstore.git\n   cd bookhaven-ebookstore\n   ```\n\n2. **Database Setup**\n   ```sql\n   -- Create database\n   CREATE DATABASE onlinebookstore;\n   \n   -- Create users table\n   CREATE TABLE users (\n       user_id INT AUTO_INCREMENT PRIMARY KEY,\n       username VARCHAR(50) UNIQUE NOT NULL,\n       password VARCHAR(255) NOT NULL,\n       email VARCHAR(100) UNIQUE NOT NULL,\n       profile_picture LONGBLOB,\n       birthday DATE\n   );\n   \n   -- Create books table\n   CREATE TABLE books (\n       book_id INT AUTO_INCREMENT PRIMARY KEY,\n       title VARCHAR(255) NOT NULL,\n       author VARCHAR(255) NOT NULL,\n       publisher VARCHAR(255),\n       description TEXT,\n       size VARCHAR(50),\n       genre VARCHAR(100),\n       pages INT,\n       languages VARCHAR(100),\n       price DECIMAL(10,2) NOT NULL,\n       cover_image LONGBLOB,\n       stock_count INT DEFAULT 0\n   );\n   \n   -- Insert sample book data\n   INSERT INTO books (title, author, publisher, description, size, genre, pages, languages, price, stock_count) VALUES\n   ('The Great Gatsby', 'F. Scott Fitzgerald', 'Scribner', 'A classic American novel', '5x8 inches', 'Fiction', 180, 'English', 15.99, 25),\n   ('To Kill a Mockingbird', 'Harper Lee', 'J.B. Lippincott \u0026 Co.', 'A gripping tale of racial injustice', '5x8 inches', 'Fiction', 281, 'English', 18.99, 30),\n   ('1984', 'George Orwell', 'Secker \u0026 Warburg', 'Dystopian social science fiction', '5x8 inches', 'Science Fiction', 328, 'English', 16.99, 20);\n   ```\n\n3. **Configure Database Connection**\n   ```java\n   // Update DatabaseConnection.java with your database credentials\n   private static final String DB_URL = \"jdbc:mysql://localhost:3306/onlinebookstore\";\n   private static final String USER = \"your_username\";\n   private static final String PASS = \"your_password\";\n   ```\n\n4. **Build the Project**\n   ```bash\n   mvn clean compile\n   ```\n\n5. **Run the Application**\n   ```bash\n   mvn exec:java -Dexec.mainClass=\"com.bookstore.casestudy.Init\"\n   ```\n\n### **Using NetBeans IDE**\n\n1. **Open Project**\n   - File → Open Project\n   - Navigate to the bookhaven-ebookstore directory\n   - Select the project folder\n\n2. **Run Application**\n   - Right-click on the project\n   - Select \"Run\" or press F6\n   - The application will start with the splash screen\n\n## ⚙️ Configuration\n\n### **Database Configuration**\nThe application uses MySQL for data persistence. Update the database connection settings in `DatabaseConnection.java`:\n\n```java\npublic class DatabaseConnection {\n    private static final String DB_URL = \"jdbc:mysql://localhost:3306/onlinebookstore\";\n    private static final String DATABASE_DRIVER = \"com.mysql.cj.jdbc.Driver\";\n    private static final String USER = \"root\";\n    private static final String PASS = \"\";\n    \n    // Configure connection pooling and timeouts as needed\n}\n```\n\n### **Voucher System Configuration**\nPre-configured vouchers can be set up in `MainMenu.java`:\n\n```java\n// Add vouchers during initialization\nvoucherSystem.addVoucher(\"WELCOME20\", 20.0, LocalDate.of(2024, 12, 31));\nvoucherSystem.addVoucher(\"STUDENT10\", 10.0, LocalDate.of(2024, 6, 30));\nvoucherSystem.addVoucher(\"NEWUSER50\", 50.0, LocalDate.of(2024, 12, 31));\n```\n\n### **UI Theme Configuration**\nThe application uses Windows Look and Feel for native appearance:\n\n```java\n// In Init.java\nUIManager.setLookAndFeel(\"com.sun.java.swing.plaf.windows.WindowsLookAndFeel\");\n```\n\n## 📱 Usage Guide\n\n### **User Registration \u0026 Authentication**\n\n1. **Creating an Account**\n   - Launch the application\n   - Click \"Sign Up\" on the login screen\n   - Fill in required information:\n     - Username (must be unique)\n     - Email address (Gmail validation)\n     - Birthday (MM/dd/yyyy format)\n     - Password and confirmation\n   - Click \"Sign Up\" to create account\n\n2. **Logging In**\n   - Enter username and password\n   - Click \"Login\" button\n   - System validates credentials and opens main interface\n\n3. **Profile Management**\n   - Click user icon in main menu\n   - Update personal information\n   - Change password (requires current password)\n   - Upload profile picture\n\n### **Browsing and Shopping**\n\n1. **Book Catalog**\n   - Browse books in grid layout\n   - View book covers, titles, authors, and prices\n   - Use search functionality to find specific books\n   - Click on books to view detailed information\n\n2. **Adding to Cart**\n   - Click \"Add to Cart\" on any book\n   - Select book type (Paperback/Hardcover)\n   - Adjust quantity using spinner controls\n   - Monitor cart count in navigation\n\n3. **Shopping Cart Management**\n   - Navigate to Cart section\n   - Review selected books and quantities\n   - Modify quantities or remove items\n   - Select books for checkout using radio buttons\n\n4. **Checkout Process**\n   - Click checkout button with selected items\n   - Fill in delivery information:\n     - Full name (First, Middle, Last)\n     - Complete address details\n     - Mobile number\n   - Select payment method\n   - Apply voucher codes for discounts\n   - Review order summary and totals\n\n5. **Order Completion**\n   - Confirm order details\n   - Generate and print receipt\n   - Receipt includes:\n     - Order items and quantities\n     - Pricing breakdown\n     - Voucher discounts\n     - Payment method\n     - Customer information\n\n### **Voucher System**\n\n1. **Available Vouchers**\n   - \"ELYEANDRE\": ₱100 discount\n   - \"Hello\": ₱150 discount  \n   - \"ELYEANDRE123\": ₱5000 discount\n\n2. **Applying Vouchers**\n   - Enter voucher code in checkout\n   - System validates code and expiration\n   - Discount automatically applied to total\n   - Voucher details shown in receipt\n\n### **Search and Navigation**\n\n1. **Book Search**\n   - Use search bar in main interface\n   - Search by title, author, or genre\n   - Results update in real-time\n   - No results message when applicable\n\n2. **Menu Navigation**\n   - Browse: Book catalog (default view)\n   - Cart: Shopping cart management\n   - User: Profile and account settings\n   - Message: FAQ and support information\n   - Logout: End session and return to login\n\n## :lock: Security Notes\n\nThis is an academic prototype; security hardening is minimal.\n\n### Current State\n- Plaintext password storage (no hashing or salting)\n- Basic duplicate + format validation only\n- Mixed use of prepared statements (needs full audit for injection safety)\n- No role-based access or authorization layers\n- Single-user in-memory \"session\"; no token or timeout mechanism\n\n### Recommended Improvements (Not Implemented Yet)\n- Hash passwords with bcrypt/Argon2\n- Centralize input validation \u0026 sanitize all user-provided strings\n- Introduce DAO/data layer with consistent prepared statements\n- Add transaction handling for multi-step operations\n- Implement proper session management and logout invalidation\n- Add logging \u0026 audit trails for auth events\n\n\n## 🚀 Deployment\n\n### **Desktop Application Deployment**\n\n#### **JAR Package Creation**\n```bash\n# Create executable JAR with dependencies\nmvn clean compile assembly:single\n\n# The JAR file will be created in target/ directory\n# Run with: java -jar target/bookhaven-ebookstore-jar-with-dependencies.jar\n```\n\n#### **Windows Executable (Optional)**\n```bash\n# Using jpackage (Java 14+)\njpackage --input target/ \\\n         --name \"BookHaven\" \\\n         --main-jar bookhaven-ebookstore.jar \\\n         --main-class com.bookstore.casestudy.Init \\\n         --type exe \\\n         --icon src/main/resources/icon.ico\n```\n\n### **Database Deployment**\n\n#### **Production Database Setup**\n\nPreferred (phpMyAdmin on XAMPP):\n1. Start MySQL in XAMPP.\n2. Open phpMyAdmin → Create database `onlinebookstore` (utf8mb4_unicode_ci).\n3. Select the database → Import → Choose file: `database/onlinebookstore.sql` → Go.\n\nCLI alternative:\n```bash\n# Create DB and user (optional but recommended for production)\nmysql -u root -p -e \"CREATE DATABASE IF NOT EXISTS onlinebookstore CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\"\nmysql -u root -p -e \"CREATE USER IF NOT EXISTS 'bookstore_app'@'localhost' IDENTIFIED BY 'secure_password';\"\nmysql -u root -p -e \"GRANT SELECT, INSERT, UPDATE, DELETE ON onlinebookstore.* TO 'bookstore_app'@'localhost'; FLUSH PRIVILEGES;\"\n\n# Import the provided dump that includes schema + data\nmysql -u bookstore_app -p onlinebookstore \u003c database/onlinebookstore.sql\n```\n\n#### **Configuration for Production**\n```java\n// Update DatabaseConnection.java for production\nprivate static final String DB_URL = \"jdbc:mysql://production-server:3306/onlinebookstore\";\nprivate static final String USER = \"bookstore_app\";\nprivate static final String PASS = System.getenv(\"DB_PASSWORD\"); // Use environment variable\n```\n\n### **Installation Package**\n\n#### **Create Installation Directory Structure**\n```\nBookHaven-Installer/\n├── bookhaven.jar\n├── lib/\n│   └── mysql-connector-java-8.0.33.jar\n├── config/\n│   └── database.properties\n├── resources/\n│   └── images/\n├── README.txt\n└── install.bat (Windows) / install.sh (Linux)\n```\n\n#### **Installation Script (Windows)**\n```batch\n@echo off\necho Installing BookHaven Bookstore...\n\nREM Create application directory\nmkdir \"C:\\Program Files\\BookHaven\"\n\nREM Copy application files\ncopy bookhaven.jar \"C:\\Program Files\\BookHaven\\\"\nxcopy lib \"C:\\Program Files\\BookHaven\\lib\\\" /E /I\nxcopy resources \"C:\\Program Files\\BookHaven\\resources\\\" /E /I\n\nREM Create desktop shortcut\necho Creating desktop shortcut...\nREM Add shortcut creation commands here\n\necho Installation complete!\npause\n```\n\n### **System Requirements**\n\n#### **Minimum Requirements**\n- **Operating System**: Windows 7+ / macOS 10.12+ / Linux\n- **Java Runtime**: JRE 11 or higher\n- **Memory**: 512 MB RAM minimum, 1 GB recommended\n- **Storage**: 50 MB free disk space\n- **Database**: MySQL 5.7+ or MariaDB 10.2+\n\n#### **Recommended Requirements**\n- **Java Runtime**: JRE 17 (LTS version)\n- **Memory**: 2 GB RAM or higher\n- **Storage**: 200 MB free disk space\n- **Database**: MySQL 8.0+ with InnoDB engine\n- **Display**: 1024x768 minimum resolution\n\n## 🤝 Contributing\n\nWe welcome contributions to improve BookHaven! Here's how you can help:\n\n### **Getting Started**\n\n1. **Fork the Repository**\n   ```bash\n   # Click the \"Fork\" button on GitHub\n   git clone https://github.com/elyeandre/bookhaven-Ebookstore.git\n   cd bookhaven-ebookstore\n   ```\n\n2. **Set Up Development Environment**\n   ```bash\n   # Install dependencies\n   mvn clean install\n   \n   # Set up database (see Quick Start section)\n   # Configure your IDE (NetBeans recommended)\n   ```\n\n3. **Create Feature Branch**\n   ```bash\n   git checkout -b feature/your-feature-name\n   # or\n   git checkout -b bugfix/issue-description\n   ```\n\n### **Development Guidelines**\n\n#### **Code Style**\n- Follow Java naming conventions (PascalCase for classes, camelCase for methods)\n- Use meaningful variable and method names\n- Add JavaDoc comments for public methods and classes\n- Maintain consistent indentation and formatting\n- Keep methods focused and reasonably sized\n\n#### **Database Changes**\n- Create migration scripts for schema changes\n- Test with sample data\n- Document any new table structures\n- Ensure backward compatibility when possible\n\n#### **UI Development**\n- Use NetBeans GUI Builder for consistency\n- Follow existing color scheme and styling\n- Ensure responsive behavior\n- Test across different screen resolutions\n- Maintain accessibility standards\n\n### **Contribution Types**\n\n#### **🐛 Bug Fixes**\n- Fix authentication issues\n- Resolve cart calculation problems\n- Address UI/UX inconsistencies\n- Database connection improvements\n\n#### **✨ New Features**\n- Enhanced search functionality\n- Additional payment methods\n- User rating and review system\n- Book recommendation engine\n- Advanced inventory management\n\n#### **📚 Documentation**\n- Improve code documentation\n- Create user guides and tutorials\n- API documentation\n- Setup and deployment guides\n\n#### **🧪 Testing**\n- Unit tests for business logic\n- Integration tests for database operations\n- UI automation tests\n- Performance testing scenarios\n\n### **Pull Request Process**\n\n1. **Before Submitting**\n   - [ ] Test your changes thoroughly\n   - [ ] Update documentation if needed\n   - [ ] Ensure code follows style guidelines\n   - [ ] Add appropriate comments\n\n2. **PR Description Template**\n   ```markdown\n   ## Description\n   Brief description of changes made\n\n   ## Type of Change\n   - [ ] Bug fix (non-breaking change)\n   - [ ] New feature (non-breaking change)\n   - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)\n   - [ ] Documentation update\n\n   ## Testing\n   - [ ] Tested locally\n   - [ ] Database changes tested\n   - [ ] UI changes verified\n\n   ## Screenshots (if applicable)\n   Add screenshots for UI changes\n   ```\n\n### **Code Review Guidelines**\n- Reviews required for all pull requests\n- Focus on code quality, security, and maintainability\n- Provide constructive feedback\n- Test changes locally when possible\n\n## 📄 License\n\nThis project is licensed under the **MIT License** - see the [LICENSE](LICENSE) file for details.\n\n### **MIT License Summary**\n- ✅ Commercial use allowed\n- ✅ Modification allowed\n- ✅ Distribution allowed\n- ✅ Private use allowed\n- ❌ No liability\n- ❌ No warranty\n- ❗ License and copyright notice required\n\n```\nCopyright (c) 2024 BookHaven Contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n```\n\n## :camera_flash: Screenshots\n\n\u003e Disclaimer: Screens reflect an academic prototype; features like order history, payment gateway integration, and secure password handling are not implemented.\n\n### Main Application Interface\n![Main Menu](https://github.com/user-attachments/assets/caef18c2-0500-4815-b995-88810cebd237)\n*Main application window showing book catalog with search functionality*\n\n### User Authentication\n![Login Screen](https://github.com/user-attachments/assets/7d5fd3da-d616-43bf-ac0f-b456d068a465)\n*Secure login interface with user registration option*\n\n### Shopping Cart Management\n![Shopping Cart](https://github.com/user-attachments/assets/b000c863-7a3b-462f-8bc7-42474829d749)\n*Interactive shopping cart with quantity controls and selection*\n\n### Checkout Process\n![Checkout](https://github.com/user-attachments/assets/09093a4b-23e8-4360-aaaa-47ced5eb5fbb)\n*Comprehensive checkout with customer information and payment options*\n\n### User Profile Management\n![User Profile](https://github.com/user-attachments/assets/b573702c-c844-44be-bd83-b6ade7d853a0)\n*User account management with profile picture and password update*\n\n### Book Details View\n![Book Details](https://github.com/user-attachments/assets/fca2b4ce-97da-4cda-a9d4-1df6a8c47546)\n*Detailed book information display with purchase options*\n\n### Search Results\n![Search Feature](https://github.com/user-attachments/assets/8b1b094c-aef0-4cdb-9197-95273de60f71)\n*Advanced search functionality with real-time filtering*\n\n---\n\n**📚 Built with ❤️ for Book Lovers Everywhere**\n\n*\"Connecting readers with their next great adventure through technology\"*\n\n---\n\n[made-with-java]: https://img.shields.io/badge/Made%20with-Java-orange.svg?style=for-the-badge\n[built-with-love]: https://img.shields.io/badge/Built%20with-❤️-red.svg?style=for-the-badge\n[forthebadge-url]: http://forthebadge.com\n[contributors-shield]: https://img.shields.io/github/contributors/elyeandre/bookhaven-Ebookstore.svg?style=for-the-badge\n[contributors-url]: https://github.com/elyeandre/bookhaven-Ebookstore/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/elyeandre/bookhaven-Ebookstore.svg?style=for-the-badge\n[forks-url]: https://github.com/elyeandre/bookhaven-Ebookstore/network/members\n[stars-shield]: https://img.shields.io/github/stars/elyeandre/bookhaven-Ebookstore.svg?style=for-the-badge\n[stars-url]: https://github.com/elyeandre/bookhaven-Ebookstore/stargazers\n[issues-shield]: https://img.shields.io/github/issues/elyeandre/bookhaven-Ebookstore.svg?style=for-the-badge\n[issues-issues-url]: https://github.com/elyeandre/bookhaven-Ebookstore/issues\n\n*Last updated: September 23, 2025*\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felyeandre%2Fbookhaven-ebookstore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felyeandre%2Fbookhaven-ebookstore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felyeandre%2Fbookhaven-ebookstore/lists"}