Welcome to the Restaurant Food Ordering App, a comprehensive solution designed to streamline customers' online food ordering experience and optimize inventory management for restaurant administrators. This project is developed as part of the Software Engineering course at the National University of Computer and Emerging Sciences, Karachi Campus.
The Restaurant Food Ordering App is a user-friendly platform that allows customers to browse menus, place orders, and make secure payments online. It leverages cutting-edge technologies such as Google Cloud API for secure login, Stripe API for secure payment processing, and Cloudinary API for image storage and manipulation. Additionally, automated testing using Jest ensures the reliability and robustness of each component.
In today's fast-paced world, the convenience of online ordering has become paramount. Our system is designed to meet the evolving needs of both customers and restaurant administrators. Customers can browse a wide selection of delectable dishes through our user-friendly website, place orders effortlessly, and complete secure payments—all from the comfort of their homes. Meanwhile, restaurant administrators benefit from powerful tools for inventory management, allowing them to add new menu items, delete outdated dishes, and maintain a comprehensive overview of stock levels.
Our project, the Restaurant Management System (RMS), is driven by the need to improve the handling of food orders and inventory in restaurants. Our goals include:
- Creating a user-friendly system for food ordering
- Ensuring security in payments
- Enabling restaurant staff to view customers' food order records
- Customers can access the internet and use the website to place orders.
- Restaurant staff are trained to use the RMS for processing orders.
- Availability of internet connectivity for both customers and restaurant staff.
- Access to accurate and up-to-date inventory information from suppliers.
- User Registration and Login: Customers can create accounts and log in to place orders and view order history. Secure authentication ensures user privacy.
- Menu Browsing and Selection: A user-friendly interface allows customers to browse the restaurant’s menu, view food items, and select dishes they wish to order.
- Order Placement: Customers can add selected food items to their cart and specify quantities. The order placement process is secure.
- Payment Processing: Multiple payment methods are available for customer convenience. Payment is securely handled using the Stripe API.
- Customized Dishes: Customers can provide preferences (e.g., spice level, dietary restrictions), and staff will prepare meals accordingly.
- Discounts, Special Offers, and Packages: Customers can avail of special deals and discounts, enhancing customer loyalty.
- Order Status Updates: Staff can view order status (processing, out for delivery, delivered), with real-time notifications for customers.
- Contact Details: Customers can easily reach out to restaurant management for queries or complaints.
- Receipt Preview: Customers can review payment details before placing an order.
- Cart Transactions: Customers can add multiple items to the cart and remove them as needed.
- Add Products: Administrators can add items to the menu along with descriptions and prices.
- Digital Payment: Multiple payment options are available, including credit card and cash on delivery.
- Performance: The system should be responsive and handle multiple concurrent users without significant slowdowns or delays.
- Reliability: The system should be always reliable and available for use, minimizing downtime and service disruptions.
- Security: The system should ensure the security and confidentiality of user data, including personal information and payment details. Secure login is implemented using the Google Cloud API, while payment processing is handled securely using the Stripe API.
- Usability: The system should be intuitive and easy to use for both customers and restaurant staff, requiring minimal training.
- Technical Limitations: Limited availability of certain technologies or programming languages may restrict the implementation of specific features or functionalities.
- Time Constraints: The project may be subject to deadlines or timeframes that restrict the amount of time available for the development and testing phases.
- Resource Constraints: Limited availability of human resources, such as developers, testers, or project managers, may impact the project's progress and execution.
The Restaurant Management System (RMS) architecture consists of four main components: the Client Interface, Server-Side Application, and Database. Customers interact with the Client Interface to place orders and track them. The Server-Side Application processes these orders, handles payments, and updates inventory, communicating with the Database to store and retrieve data. These components interact seamlessly to provide a smooth and reliable ordering experience for customers while enabling efficient management of restaurant operations.
To get a local copy up and running, follow these steps:
- Clone the repository
git clone https://github.com/yourusername/restaurant-food-ordering-app.git
- Navigate to the project directory
cd restaurant-food-ordering-app
- Manage the database with Prisma Studio
npx prisma studio
- Start the development server
npm run dev
- Prisma
- Docker
- Next.js
- Babel (for testing)
- Stripe API (for payment processing)
- Tailwind CSS
- TypeScript
- Jest (for automated testing)
- Cloudinary API (for image storage and manipulation)
- Secure login via Google Cloud API
- Secure payment using Stripe API