Brewbucks Coffee ♨️ - Queue-Free Coffee Ordering at Your Fingertips
Abstract
Calling all coffee lovers! The Brewbucks Coffee mobile web application is here to make a smooth and hassle-free coffee ordering experience. You can explore a wide range of coffee options, personalize your orders, and make payments effortlessly. Plus, you can track your orders in real-time and earn rewards with our loyalty program. The MVP focuses on key features like menu display, customizable ordering, online payments, order tracking, and earning reward points. Scalability, availability, and reliability are priortised to ensure a seamless user experience.
Let’s kickstart our coffee journey together!
Author
Name: [Megan NG]
Student number: 47807914
Functionality
- Extensive Coffee Menu
Explore full range of coffees and snacks with ease. The menu is displayed in a user-friendly interface showcasing Brewbucks Coffee’s menu. Categorized browsing is implemented for easy navigation through the menu items.
- Customizable Ordering
Construct an intuitive ordering process. Customers have the options to personalize their orders, including adjusting espresso shot strength and selecting dairy-free alternatives.
- Easy Payments
Enable seamless online payments through various methods such as pre-stored credit cards, Apple Pay, and Google Pay. In addition, secure payment processing mechanisms is necessary to ensure the safety of custome transactions.
- Order Tracking
Develop a real-time order tracking system that keeps customers informed about their order status. Status includes order received, preparation in progress, and order ready for pickup.
- Reward Points and Loyalty Program
Design and implement a loyalty program where customers earn reward points for every purchase. Customers could easily view their accumulated points and redeem them for discounts or free beverages. For example, a “Pay by Points” functionality allowing customers to use their accumulated points as a form of payment during checkout.
Scope
The Minimum Viable Product (MVP) for the Brewbucks Coffee Application should deliver essential functionalities to provide a seamless coffee ordering experience. It includes:
- Display of Menu Items: List available food and beverage items offered by Brewbucks Coffee.
- Customizable Ordering: Post customized orders, tailor beverages according to the customer preferences.
- Online Payment Page: A payment page for secure transactions. At least one payment method, such as credit cards, will be integrated to facilitate smooth and secure payments.
- Order History and Status: View order history and track the status of the orders.
- Reward Point System: View current reward points. Also, points are added for each successful order transaction.
- Merchant Inerface: Show all current orders and permission to change order status.
Additionally, I suppose Service-Based Architecture would be a good choice for this system.
Quality Attributes
The primary focus of the application is likely to be on providing a smooth user experience for placing orders.
Scalability
The application must efficiently handle fluctuating user loads, particularly during peak hours such as morning rush or coffee breaks. Scalability ensures optimal performance even under heavy user demand. Measurable metrics, such as response time during peak usage periods, help gauge the system’s scalability.
Availability
Consistent accessibility is paramount to ensure a seamless user experience. The application must be available at all times for customers to place orders and make payments without encountering downtime or accessibility issues. Monitoring uptime percentage and promptly addressing any payment failures contribute to reliability and trust in the system.
Reliability
The software must consistently deliver its functionality without failure, especially during critical tasks like order placement and payment processing. Reliability instills confidence in users and ensures successful transaction completion. Monitoring error rates and conducting stress testing are essential to verify the system’s reliability.
While deployability, extensibility, and maintainability are crucial for accommodating future enhancements and ensuring long-term sustainability, the focus on availability, reliability, and scalability is paramount for maintaining daily operations. Interoperability and modularity are also critical considerations, albeit secondary to ensuring optimal system performance. Additionally, security and testability are indispensable aspects that contribute to the overall robustness and reliability of the system.
Evaluation
Tests will be conducted from various perspectives:
Functionality Tests
- Automated API Testing
Automated tests will be performed on REST API calls for menu listing, order placement, and reward points retrieval. This ensures that the backend functionalities operate correctly and consistently.
- Manual End-User Testing
Manual testing will be conducted to evaluate the application’s functionality from an end-user perspective. Testers will navigate through the application, placing orders, redeeming reward points, and tracking orders to ensure a seamless user experience.
- Load Testing (Scalability)
Load testing tools such as Apache JMeter will be utilized to simulate user traffic and measure the system’s performance under various loads. Metrics including load time, response time, throughput, and resource utilization will be analyzed to assess the system’s scalability.
- Uptime Monitoring (Availability)
Automated monitoring tools like Nagios or Prometheus will be implemented to measure the percentage of time the system is available for users. The goal is to achieve a minimum uptime of 99.9% over a specific period. Additionally, the frequency of downtime incidents or accessibility issues will be tracked to ensure optimal availability.
- Stress test (Reliability)
Stress testing frameworks, such as Apache JMeter, will be utilized to measure the system’s reliability under stress conditions. Tests will focus on evaluating error rates, system recovery time, and transaction success rates during stress testing scenarios.