Welcome to DeliFood! DeliFood is a robust full-stack MERN (MongoDB, Express.js, React.js, Node.js) food delivery application that allows users to browse a variety of food options, add items to their cart, and place orders. The application includes a backend API for managing menu items and user orders.
-
User authentication
-
Search for Food
-
Add to Cart and Total Price
-
Saved Order History
-
Save and Edit Delivery Addresses
-
Skeleton Screen Implementation
- DeliFood enhances the user experience by implementing skeleton screens, providing users with visual feedback during the loading process.
- This creates a smoother transition between screens.
-
Modify User Details (in Progress)
- Easily modify user details such as name, email, and password.
- DeliFood prioritizes user control and personalization.
-
Easy-Quick Checkout with Stripe
- The application streamlines the checkout process with Stripe integration, providing users with a secure and quick payment experience.
- Say goodbye to long checkout processes!
Before you begin, ensure you have the following installed on your machine:
- Node.js
- MongoDB
Run the following commands in your terminal
- Clone the repository:
git clone https://github.com/deepti-chauhan/DeliFood.git
- Navigate to the project directory:
cd DeliFood
- Install server dependencies:
cd backend
npm install
- Install client dependencies:
cd frontend
npm install
- Set up the MongoDB database and Stripe:
- Create a .env file in the backend directory and provide your env variables:
- you will get your stripe secret key from your stripe account (follow for instructions)
MONGO_URI=your-mongodb-uri
PORT=5000
BASE_URL=http://localhost:3000
JWT_SECRET_KEY=your_secret_key
STRIPE_KEY=your_secret_stripe_key
- Start frontend
- The client application will open in your default web browser at http://localhost:3000.
cd frontend
npm start
- Start backend
- The server will run on http://localhost:5000.
cd backend
npm start
The project structure is organized as follows:
- /frontend: React.js frontend application
- /backend: Node.js and Express.js backend API
- React.js
- Redux (for state management)
- FetchApi (for API request)
- CSS, SCSS (for styling)
- React sweetalert2 ( for beautiful, responsive alerts)
- React react-loader-spinner (for loading effects at API calls)
- React react-loading-skeleton (for skeleton loading effects)
- React react-toastify (for notifications )
- Node.js
- Express.js
- MongoDB (using Mongoose for ODM)
- Stripe
- JWT for authentication
- bcrypt for password hashing
- UUID for generating unique ids
For deployment, run npm run build
and upload build/
to your server.
If you'd like to contribute to this project, please follow the Contribution Guidelines. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License.