Tomato is a full stack food delivery MERN application. It is fully responsive and includes two frontends, one for clients and one for admins, both utilizing a common backend.
- Client Site: Built with React.js
- Admin Site: Built with React.js
- Built with Node.js and Express.js
- Database: MongoDB
- Manage Foods: Add and remove foods from the admin panel.
- Stock Control: Remove out-of-stock items from the client site.
- Add New Items: Easily add new food items from the admin panel.
- View All Foods: See all food items added so far and remove any if necessary.
- Order Management: View orders placed by customers. Update order statuses: Food processing, Out for delivery, and Delivered. Changes reflect in the database and client site.
- Authentication: Users can register and create an account. A JWT token is created upon registration and the user is logged in automatically.
- Food Category Browsing: Browse food items by category.
- Dynamic Food Items: Items are fetched directly from the database, managed by the admin panel.
- Cart Functionality: Add food items to the cart and proceed to checkout.
- Order Placement: Fill out order details and place orders.
- Payment Integration: Stripe integration for payments using debit cards. Orders are placed once payment is confirmed.
- Order Tracking: Track order status: Food processing, Out for delivery, and Delivered. Status updates are managed by the admin panel.
- Order History: Check past orders.
- Data Management: Schemas, models, controllers, routes, and endpoints are set up for all functionalities.
- CORS Enabled: Both frontend sites are allowed for CORS.
- Payment Integration: Secure payments with Stripe.
- Authentication: JWT token-based authentication for user security.
- Ejs: Enabled template engine or view engine "ejs" for creating the views on server side by utilizing stylesheets for styling and javascript for dynamic tasks.
- JWT tokens are used for user authentication. Users must be logged in to place orders and access certain features.
- React.js: For both client and admin frontends. Utilizes JavaScript, JSX, plain CSS, and various npm packages.
- Node.js and Express.js: For backend server creation, API development (including authentication logic with JWT tokens), and database connections.
- MongoDB (Atlas Cloud): As the database.
- Stripe: For payment integration.
⭐️ If you like this project, please give it a star!
Created with ❤️ by Razak Attar