{"id":29113952,"url":"https://github.com/pasanswijekoon/distributed-online-auction-system","last_synced_at":"2026-05-17T17:32:19.812Z","repository":{"id":298994349,"uuid":"1000650169","full_name":"PasanSWijekoon/Distributed-Online-Auction-System","owner":"PasanSWijekoon","description":"This project implements a distributed online auction system, built using Java EE (Jakarta EE 10) and Maven for a multi-module enterprise application. It provides functionalities for users to register, log in, create auction items, place bids, and view auction statuses in real-time.","archived":false,"fork":false,"pushed_at":"2025-06-14T02:28:22.000Z","size":1651,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-29T11:05:58.125Z","etag":null,"topics":["ejb","gson","jakartaee","jakartaee10","java","java17","javaee","jms","jms-topic","maven","notyf","payara"],"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/PasanSWijekoon.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-06-12T05:45:59.000Z","updated_at":"2025-06-14T02:21:45.000Z","dependencies_parsed_at":"2025-06-14T03:32:48.863Z","dependency_job_id":null,"html_url":"https://github.com/PasanSWijekoon/Distributed-Online-Auction-System","commit_stats":null,"previous_names":["pasanswijekoon/distributed-online-auction-system"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/PasanSWijekoon/Distributed-Online-Auction-System","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PasanSWijekoon%2FDistributed-Online-Auction-System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PasanSWijekoon%2FDistributed-Online-Auction-System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PasanSWijekoon%2FDistributed-Online-Auction-System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PasanSWijekoon%2FDistributed-Online-Auction-System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PasanSWijekoon","download_url":"https://codeload.github.com/PasanSWijekoon/Distributed-Online-Auction-System/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PasanSWijekoon%2FDistributed-Online-Auction-System/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270969189,"owners_count":24677269,"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-08-18T02:00:08.743Z","response_time":89,"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":["ejb","gson","jakartaee","jakartaee10","java","java17","javaee","jms","jms-topic","maven","notyf","payara"],"created_at":"2025-06-29T11:05:57.937Z","updated_at":"2026-05-17T17:32:14.762Z","avatar_url":"https://github.com/PasanSWijekoon.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Distributed Online Auction System\n\nThis project implements a distributed online auction system, built using Java EE (Jakarta EE 10) and Maven for a multi-module enterprise application. It provides functionalities for users to register, log in, create auction items, place bids, and view auction statuses in real-time.\n\n## Project Structure\n\nThe project is organized into a Maven multi-module structure:\n\n* **`online-auction-system-ear`**: The Enterprise Archive (EAR) module that packages the EJB and Web modules for deployment to an application server.\n* **`online-auction-system-ejb`**: The Enterprise JavaBean (EJB) module containing the business logic and data models. This includes:\n    * **Beans**: `AuctionManagerBean` (manages auctions, items, and winning bids, handles auction creation and closing, and broadcasts updates via JMS), `BidProcessorBean` (handles bid submissions), `UserManagerBean` (manages user registration and authentication), `UserSessionManagerBean` (manages user-specific sessions and watched auctions), and `AuctionUpdateMDB` (Message Driven Bean for processing auction updates from JMS and firing CDI events to WebSockets).\n    * **Models**: `Item`, `Bid`, `UserData`, `WinnerSummary`, `AuctionUpdateEventData`.\n    * **Remote Interfaces**: `AuctionManager`, `BidProcessor`, `UserManager`, `UserSessionManager`.\n* **`online-auction-system-web`**: The Web module providing the user interface and handling web requests. This includes:\n    * **Servlets**: `AuctionServlet` (handles auction-related requests like listing, creating, and placing bids) and `UserServlet` (handles user registration, login, and logout).\n    * **Filters**: `AuthCheckFilter` (ensures authentication for protected resources).\n    * **WebSockets**: `AuctionWebSocketServer` (for real-time auction updates).\n    * **Utility**: `LocalDateTimeAdapter` (for JSON serialization/deserialization of `LocalDateTime` objects).\n    * **Frontend**: HTML, CSS, and JavaScript files (`index.html`, `login.html`, `register.html`, `home-style.css`, `auth.js`, `auth-index.js`, `index-app.js`) provide the user interface and handle client-side interactions.\n\n## Technologies Used\n\n* **Backend**: Java EE (Jakarta EE 10), EJBs (Singleton, Stateless, Message-Driven), JMS (for auction updates), CDI (for event broadcasting), WebSockets (for real-time communication).\n* **Frontend**: HTML5, CSS3, JavaScript.\n* **Libraries**:\n    * **Gson**: For JSON serialization and deserialization.\n    * **Notyf**: A JavaScript library for toast notifications.\n    * **Font Awesome**: For icons.\n* **Build Tool**: Maven.\n* **Development Environment**: Configured for IntelliJ IDEA, Eclipse, NetBeans, and VS Code.\n\n## Features\n\n* **User Management**: Register new users, authenticate existing users, and manage user sessions.\n* **Auction Creation**: Users can create new auction items with a name, description, image, starting price, and duration.\n* **Bidding**: Users can place bids on active auction items. The system ensures bids are higher than the current highest bid.\n* **Real-time Updates**: Auction status, including current bids and winning bidders, are updated in real-time using WebSockets.\n* **Auction Management**: The system automatically checks and closes auctions when their time expires.\n* **Auction Listings**: View all active auctions, all finished auctions, recently finished auctions, and a list of top winners.\n* **\"My Won Items\"**: Users can view a list of items they have won.\n* **Image Uploads**: Supports uploading images for auction items.\n\n## Setup and Build\n\n1.  **Prerequisites**:\n    * JDK 17 or higher.\n    * Maven 3.x.\n    * A Jakarta EE 10 compatible application server (e.g., WildFly, GlassFish).\n\n2.  **Build the Project**:\n    Navigate to the root directory of the project (where `pom.xml` is located) and run:\n    ```bash\n    mvn clean install\n    ```\n    This command will compile all modules, run tests, and package the `online-auction-system-ear` module into an `.ear` file.\n\n3.  **Deployment**:\n    Deploy the generated `online-auction-system-ear.ear` file (located in `online-auction-system-ear/target/`) to your application server.\n\n## Usage\n\n1.  **Access the Application**: Once deployed, the web application will be accessible at `/auction-app` (e.g., `http://localhost:8080/auction-app/`).\n2.  **Registration/Login**: Navigate to `register.html` to create a new account or `login.html` to log in.\n3.  **Browse Auctions**: After logging in, you can view active auctions, create new ones, place bids, and see your won items.\n4.  **Real-time Interaction**: The system will provide real-time updates on bids and auction statuses without needing to refresh the page.\n\n## Developer\n\n* Pasan Wijekoon\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasanswijekoon%2Fdistributed-online-auction-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpasanswijekoon%2Fdistributed-online-auction-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpasanswijekoon%2Fdistributed-online-auction-system/lists"}