QuickBite is a comprehensive food ordering and delivery platform developed as the final project for React course. This web application is designed to streamline the process of browsing, ordering, and delivering food, providing an intuitive interface and robust features for users.
- Sign Up / Login: Secure user registration and authentication using JWT.
- User Roles: Different user roles including customers, restaurant owners, and administrators.
- Browse Menus: Customers can browse menus from various restaurants.
- Add/Edit/Delete Food Items: Restaurant owners can manage their food items.
- Search Functionality: Easily find food items or restaurants.
- Place Orders: Seamless ordering process with multiple payment options.
- Order History: View past orders and their statuses.
- Real-time Order Tracking: Track orders in real-time from preparation to delivery.
- User Management: Admins can view and manage all users, assign roles, and handle user-related issues.
- Restaurant Approval: Admins can approve or reject restaurant registrations.
- Analytics Dashboard: View analytics and reports on user activity, orders, and revenue.
- Order Updates: Real-time notifications for order status updates.
- Promotional Notifications: Send promotional messages to users.
- Profile Management: Users can update their personal information and profile pictures.
- Order Management: View and manage current and past orders.
- Favorites: Save favorite dishes and restaurants for easy access.
- React : A JavaScript library for building user interfaces.
- Redux Toolkit : State management library for managing application state.
- Tailwind CSS : Utility-first CSS framework for quickly building custom designs.
- NextUI : UI components for React applications.
- React Icons : Provides a set of icons for use in React applications.
- React Helmet : Manages document head tags such as
<title>
and<meta>
in React applications. - Axios : A promise-based HTTP client for making requests to the backend API.
- MUI : React components for faster and easier web development.
- DaisyUI : Tailwind CSS components.
- Emotion : Library designed for writing css styles with JavaScript.
- React Toastify : Provides notification messages.
- Node.js : A JavaScript runtime environment for server-side applications.
- Express.js : A minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.
- MongoDB : A NoSQL database used for storing user data, food items, orders, and more.
- Mongoose : A MongoDB object modeling tool designed to work in an asynchronous environment.
- Resend : A library used for sending email notifications to users.
- JWT (JSON Web Tokens) : Used for securely transmitting information between parties as a JSON object.
- Bcrypt : A library for hashing passwords to ensure secure storage in the database.
- Validator : Provides validation functions to validate user inputs and API requests.
- Multer : Middleware for handling
multipart/form-data
, primarily used for uploading files in your applications. - CORS (Cross-Origin Resource Sharing) : Middleware for enabling CORS in your Express.js application.
- Body-parser : Node.js body parsing middleware.
- Colors : Get colors in your node.js console.
- Cookie-parser : Parse Cookie header and populate req.cookies with an object keyed by the cookie names.
- Dotenv : Loads environment variables from a .env file into process.env.
- Express-async-handler : Simple middleware for handling exceptions inside of async express routes.
- Google-auth-library : Google APIs Node.js Client.
- Nodemailer : Send emails with Node.js.
- Nodemon : Simple monitor script for use during development of a node.js app.
- Stripe : Node.js library for the Stripe API.
- Swagger-jsdoc : Generates swagger doc based on JSDoc.
- Swagger-ui-express : Creates a Swagger UI page using an OpenAPI Specification.
git clone https://github.com/yourusername/food-delivery-app.git
cd food-delivery-app
cd frontend
npm install
cd ../backend
npm install
Create .env files in both the frontend and backend directories with appropriate configuration variables like API URLs, database connection strings, JWT secrets, Cloudinary credentials, and email service credentials.
cd frontend
npm run dev
cd ../backend
npm start
Open your browser and navigate to http://localhost:3000 to access the Food Delivery App.
We welcome contributions from the community. If you have suggestions, find any issues, or want to add new features, please open an issue or submit a pull request on our GitHub repository.
This project is licensed under the MIT License. See the LICENSE file for details.
Thank you for checking out Food Delivery App! We hope you find it useful and enjoyable to use. ๐ฝ๏ธ
Make sure you copy and paste the entire content to avoid missing any part of the markdown syntax. This should ensure that the code blocks and other markdown elements render correctly in your README file.