{"id":30852847,"url":"https://github.com/maneeshavr/cis6003_advanced_programming_assignment","last_synced_at":"2025-09-07T08:49:19.856Z","repository":{"id":308383738,"uuid":"1025701141","full_name":"ManeeshaVR/CIS6003_Advanced_Programming_Assignment","owner":"ManeeshaVR","description":"A sophisticated Java EE web application for a bookshop, featuring customer \u0026 inventory management, dynamic billing, invoice generation, and email notifications.","archived":false,"fork":false,"pushed_at":"2025-08-20T17:14:22.000Z","size":321,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-20T19:29:25.714Z","etag":null,"topics":["java-servlet","javaee","jsp","junit"],"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/ManeeshaVR.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}},"created_at":"2025-07-24T16:56:06.000Z","updated_at":"2025-08-20T17:18:38.000Z","dependencies_parsed_at":"2025-08-05T17:44:13.067Z","dependency_job_id":"d895f02c-78af-4a95-aefb-7b86c20742ff","html_url":"https://github.com/ManeeshaVR/CIS6003_Advanced_Programming_Assignment","commit_stats":null,"previous_names":["maneeshavr/advanced_programming_assignment","maneeshavr/cis6003_advanced_programming_assignment"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ManeeshaVR/CIS6003_Advanced_Programming_Assignment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManeeshaVR%2FCIS6003_Advanced_Programming_Assignment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManeeshaVR%2FCIS6003_Advanced_Programming_Assignment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManeeshaVR%2FCIS6003_Advanced_Programming_Assignment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManeeshaVR%2FCIS6003_Advanced_Programming_Assignment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ManeeshaVR","download_url":"https://codeload.github.com/ManeeshaVR/CIS6003_Advanced_Programming_Assignment/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManeeshaVR%2FCIS6003_Advanced_Programming_Assignment/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274015231,"owners_count":25207691,"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-09-07T02:00:09.463Z","response_time":67,"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":["java-servlet","javaee","jsp","junit"],"created_at":"2025-09-07T08:49:17.393Z","updated_at":"2025-09-07T08:49:19.847Z","avatar_url":"https://github.com/ManeeshaVR.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pahana Edu - Online Billing System\n\n## 📖 Table of Contents\n1.  [Project Overview](#-project-overview)\n2.  [Features](#-features)\n3.  [Technology Stack](#-technology-stack)\n4.  [System Design \u0026 Architecture](#-system-design--architecture)\n5.  [Installation \u0026 Setup](#-installation--setup)\n6.  [Usage](#-usage)\n7.  [Testing](#-testing)\n8.  [Version Control \u0026 Deployment](#-version-control--deployment)\n9. [License](#-license)\n\n---\n\n## 🎯 Project Overview\n\n**Pahana Edu** is a sophisticated web-based billing system developed for a leading bookshop in Colombo City. This system modernizes the manual process of managing customer accounts, inventory, and billing, providing a secure, efficient, and user-friendly platform built with industry-standard technologies and practices.\n\nThe application is built as a **distributed Java EE web application** following the MVC architecture. It leverages a modern frontend with **DaisyUI** and a robust backend with **Java Servlets**, and **MySQL** for data persistence, all managed by **Maven**.\n\n**Key Objectives Met:**\n*   **LO I:** Demonstrated through comprehensive UML design diagrams.\n*   **LO II:** Achieved via implementation of design patterns, a 3-tier architecture, and a rigorous test plan using JUnit.\n*   **LO III:** Fulfilled by maintaining a public Git repository with a clear commit history and CI/CD workflow.\n\n---\n\n## ✨ Features\n\n1. **🔐 Secure User Authentication:** Secure login with username and password.\n2. **👥 Customer Management:** Full CRUD operations (Create, Read, Update, Delete) for customer accounts.\n3. **📦 Inventory Management:** Add, update, delete, and view items from inventory.\n4. **🧾 Bill Generation \u0026 Printing:** Calculate dynamic bills based on items purchased and generate printable invoices.\n5. **📧 Email Invoices:** Send generated invoices directly to the customer's email address.\n6. **📊 Dashboard:** Overview of key metrics, recent transactions, and system statistics.\n7. **❌ Input Validation:** Comprehensive server-side and client-side validation to ensure data integrity.\n8. **💡 Help Section:** Provides users with guidelines on how to use the system.\n9. **🚪 Exit:** Secure logout and system exit.\n\n---\n\n## 🛠 Technology Stack\n\n* **Backend:** Java EE, Java Servlets, JDBC\n* **Frontend:** JSP, HTML5, CSS3, DaisyUI, JavaScript\n* **Database:** MySQL 8.0\n* **Build Tool:** Apache Maven\n* **Application Server:** Apache Tomcat 9+\n* **Email API:** Jakarta Mail\n* **Testing:** JUnit 5\n* **Version Control:** Git / GitHub\n* **IDE:** IntelliJ IDEA Ultimate\n\n---\n\n## 🏗 System Design \u0026 Architecture\n\nThe system is designed with a clear separation of concerns, following a **Model-View-Controller (MVC)** pattern within a **3-Tier Architecture**.\n\n### Architecture\n1.  **Presentation Tier (View):** JSP pages styled with DaisyUI and CSS handle all user interaction and rendering.\n2.  **Business Logic Tier (Controller):** Java Servlets process HTTP requests, manage sessions, and coordinate between the user interface and the business logic.\n3.  **Data Tier (Model):** JavaBeans (e.g., `Customer`, `Item`, `Invoice`) represent the data model, and Data Access Object (DAO) classes manage all interactions with the **MySQL database**.\n\n### Design Patterns\n1.  **Data Access Object (DAO):** Abstracts and encapsulates all database operations.\n2.  **Singleton:** Manages database connection pools efficiently.\n3.  **Service Layer:** Separates business logic from controller and data access code for improved maintainability.\n\n---\n\n## 📥 Installation \u0026 Setup\n\n### Prerequisites\nEnsure you have the following installed on your system:\n*   Java JDK 11 or higher\n*   Apache Tomcat 9.x\n*   MySQL Server 8.0\n*   Git\n*   Maven\n\n### Setup Instructions\n1.  **Clone the Repository:**\n    ```bash\n    git clone [https://github.com/your-username/pahana-edu-billing-system.git](https://github.com/ManeeshaVR/CIS6003_Advanced_Programming_Assignment.git)\n    cd pahana-edu-billing-system\n    ```\n\n2.  **Database Configuration:**\n    *   Create a MySQL database named `pahana_edu`.\n    *   Create a SQL script to create all necessary tables.\n    *   Create a SQL script to populate the database with sample data for testing (ex: user table data for login).\n\n3.  **Application Configuration:**\n    *   Update the database connection parameters (URL, username, password).\n    *   Configure the email service (SMTP host, port, username, password).\n\n4.  **Run the Application:**\n    *   Start your MySQL and Tomcat servers.\n    *   Access the application at `http://localhost:8080/pahana-edu/`.\n\n---\n\n## 🖥 Usage\n\n1.  Navigate to the application URL in your web browser.\n2.  Log in using your credentials.\n3.  Use the intuitive navigation menu to:\n    *   **Dashboard:** View a summary of recent activity.\n    *   **Customers:** Add, view, edit, or search for customers. Ensure their email is correctly entered to receive invoices.\n    *   **Items:** Manage the inventory of books and items.\n    *   **New Bill:** Select a customer, add items, generate an invoice, and send it via email.\n    *   **Help:** View the user guide.\n4.  Remember to log out after your session to maintain security.\n\n---\n\n## 🧪 Testing\n\nA combination of testing strategies ensures application reliability:\n\n*   **Unit Testing:** JUnit 5 tests for DAO layer components, ensuring individual parts work correctly in isolation.\n*   **Manual Testing :** A comprehensive test plan with rationale, cases, and data.\n\n---\n\n## 🔄 Version Control \u0026 Deployment\n\nThis project uses Git for version control with a feature-branch workflow:\n\n*   **Main Branch:** Contains stable, production-ready code.\n*   **Feature Branches:** Used for developing new features (e.g., `feature/customer-dev`, `feature/item-dev`).\n*   **Pull Requests:** All changes are merged into `main` after review and successful testing.\n\n---\n\n## 📜 License\n\nThis project is developed for academic purposes as part of the CIS6003 Advanced Programming module at Cardiff Metropolitan University. All rights reserved.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaneeshavr%2Fcis6003_advanced_programming_assignment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaneeshavr%2Fcis6003_advanced_programming_assignment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaneeshavr%2Fcis6003_advanced_programming_assignment/lists"}