{"id":24500635,"url":"https://github.com/bartolem/fast-food-restaurant","last_synced_at":"2025-03-15T07:23:01.577Z","repository":{"id":218361225,"uuid":"721649968","full_name":"Bartolem/Fast-food-restaurant","owner":"Bartolem","description":"The Fast Food Ordering System is a Java-based desktop application that simulates an ordering system for a fast-food restaurant.","archived":false,"fork":false,"pushed_at":"2024-08-06T11:08:03.000Z","size":27593,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-21T22:23:47.090Z","etag":null,"topics":["desktop-application","fast-food-restaurants","food-ordering-system","gui-application","java","jdbc","postgresql-database","swing","swing-gui-application"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Bartolem.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":"2023-11-21T13:50:03.000Z","updated_at":"2024-08-06T11:08:07.000Z","dependencies_parsed_at":"2024-01-21T14:23:41.631Z","dependency_job_id":"ec3df361-4d1a-4484-bac6-0c4982d0ee20","html_url":"https://github.com/Bartolem/Fast-food-restaurant","commit_stats":null,"previous_names":["bartolem/fast-food-restaurant"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bartolem%2FFast-food-restaurant","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bartolem%2FFast-food-restaurant/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bartolem%2FFast-food-restaurant/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bartolem%2FFast-food-restaurant/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bartolem","download_url":"https://codeload.github.com/Bartolem/Fast-food-restaurant/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243697265,"owners_count":20332917,"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":["desktop-application","fast-food-restaurants","food-ordering-system","gui-application","java","jdbc","postgresql-database","swing","swing-gui-application"],"created_at":"2025-01-21T22:21:26.095Z","updated_at":"2025-03-15T07:23:01.556Z","avatar_url":"https://github.com/Bartolem.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fast-Food Restaurant\nThe Fast Food Ordering System is a Java-based application that simulates an ordering system for a fast-food restaurant.\n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"640\" height=\"360\" src=\"https://github.com/user-attachments/assets/23c57d85-155f-4750-8514-03daaa91914f\"\u003e\n\u003c/p\u003e\n\n## Table of Contents\n* [Introduction](#introduction)\n* [Used technologies](#used-technologies)\n* [Dependencies](#dependencies)\n* [Description](#description)\n* [Features](#features)\n* [Architecture](#architecture)\n* [Getting Started](#getting-started)\n* [Usage](#usage)\n* [Demo](#demo)\n* [License](#license)\n\n## Introduction\nWorking on this project was a valuable learning experience. I deepened my understanding of object-oriented programming, particularly in designing and organizing code using Java. Developing the graphical user interface with Java Swing provided hands-on experience in creating intuitive and responsive user interfaces. Integrating PostgreSQL for database management enhanced my skills in performing CRUD operations and writing efficient SQL queries. Additionally, implementing the MVC pattern and using Maven for build automation and dependency management improved my software architecture and project management abilities. Writing unit tests with JUnit and using Git for version control further reinforced the importance of testing and version management in software development. Overall, this project has significantly enriched my knowledge and skills across various aspects of software development.\n\n## Used technologies\n* Java: The core programming language for the application.\n* Swing: Used for building the graphical user interface.\n* Maven: For project management and building.\n* JDBC: Java Database Connectivity for interacting with the PostgreSQL database.\n* PostgreSQL: Database for storing customer data, product information, and orders.\n\n## Dependencies\nThe project uses several dependencies managed through Maven:\n* JDBC Driver: For PostgreSQL connectivity.\n* iText: For PDF generation.\n* JUnit: For unit testing the application's components.\n\n## Description\nThe system allows customers to view the menu, add products to their orders, apply discounts, manage their accounts, and process orders. The graphical user interface (GUI) is built using Swing, and the application includes features such as customer registration, login, and point management for discounts.\n\n## Features\nCustomer Management:\n* Register new customers\n* Login for existing customers\n  \nMenu Browsing:\n* View a variety of product categories including burgers, drinks, sides, and desserts\n* Detailed product view with images\n  \nOrder Management:\n* Add or remove products from the order\n* View total order cost with real-time updates\n* Apply discounts based on customer points\n  \nOrder Processing:\n* Cancel or process orders\n* Points awarded on order completion\n\nBill Receipt:\n* Save bill receipt in the following formats: (file.txt, JSON, PDF, CSV)\n\n## Architecture\nThe Fast Food Ordering System follows a modular architecture, separating concerns into different packages. The architecture ensures maintainability, scalability, and ease of development.\n\nPackages\n1. org.fast_food.bill_receipt:\n* BillReceipt.java: Manages the generation and formatting of order receipts.\n* BillReceiptPrinter.java: Handles the printing of the order receipts.\n\n2. org.fast_food.customer:\n* Customer.java: Represents the customer entity.\n* CustomerDAOImpl.java: Implements customer-related database operations.\n\n3. org.fast_food.database_connection:\n* DatabaseConnection.java: Manages connections to the PostgreSQL database.\n\n4. org.fast_food.menu:\n* Menu.java: Handles the menu-related functionalities.\n* NaturalOrderComparator.java: Compares menu items for sorting.\n\n5. org.fast_food.order:\n* Order.java: Represents the order entity.\n* OrderManagement.java: Manages order processing and operations.\n\n6. org.fast_food.points_manager:\n* PointsManager.java: Manages customer points and discounts.\n\n7. org.fast_food.product:\n* Product.java: Represents the product entity.\n* Type.java: Enum for product types.\n\n8. org.fast_food.user_interface:\n* CustomerPanel.java, LoginPage.java, ProcessingOrderPage.java, ProductDetailPage.java, RegistrationForm.java, UserInterface.java: GUI components for various user interactions.\n* order_page: Contains subcomponents like CategoryPanel.java, ItemContainer.java, MenuPanel.java, OrderListPanel.java, OrderPage.java, and ProductPanel.java for order management in the UI.\n\n## Getting started\n\n## Usage\n1. Launching the Application:\nOn launch, the login page is displayed. Users can either log in with existing credentials or navigate to the registration form to create a new account.\n\n2. Browsing the Menu:\nAfter logging in, users can browse different categories of the menu using the sidebar. Each category displays a list of products with images, names, and prices.\n\n3. Adding Items to Order:\nUsers can add items to their order by clicking the \"+\" button on each product. The quantity can be adjusted using a spinner.\n\n4. Viewing the Order:\nThe order list panel on the right shows the current order with product names, prices, and quantities. It also displays the total cost.\n\n5. Applying Discounts:\nIf the user is logged in, they can check for available discounts based on their points. The total price after applying the discount is shown.\n\n6. Processing or Cancelling the Order:\nUsers can either process the order by clicking the \"Pay\" button or cancel the order by clicking the \"Cancel\" button.\n\n## Demo\nhttps://github.com/user-attachments/assets/822883fc-3fbe-4876-b806-fdb33c7ece75\n\n## License\nThis project is licensed under the MIT License. See the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartolem%2Ffast-food-restaurant","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbartolem%2Ffast-food-restaurant","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbartolem%2Ffast-food-restaurant/lists"}