This project is a clone of a restaurant application built with React. It allows users to browse a list of restaurants, view their menus, add items to a cart, and simulate ordering. The app demonstrates modern React features, component-based architecture, and state management.
- Browse restaurant listings
- View detailed restaurant menus
- Add items to cart and manage cart
- Search for restaurants
- User profile and context
- Responsive UI with shimmer loading effects
- Mock data for development and testing
src/- Main source codecomponents/- React components (Header, Body, Cart, RestaurantCard, etc.)utils/- Utility functions and custom hooksmocks/- Mock JSON data for restaurants and menus__test__/- Unit tests for components
coverage/- Test coverage reports
- Clone the repository
- Install dependencies:
npm install
- Start the development server:
npm start
- Run tests:
npm test
The chatbot is a separate Python web service in chatbot/. This repo includes
render.yaml, so on Render you can create a new Blueprint from the repo and it
will deploy the resapp-chatbot service.
Required Render environment variables for the chatbot service:
GEMINI_API_KEY: your Google Gemini API keyRENDER_URL: the deployed chatbot URL, for examplehttps://resapp-chatbot.onrender.com
The service start command is:
gunicorn app:app --bind 0.0.0.0:$PORTAfter the chatbot is deployed, set this environment variable on your hosted frontend and redeploy it:
CHATBOT_API_URL=https://resapp-chatbot.onrender.comThe chatbot also sends a self-ping every 10 minutes when RENDER_URL is set.
That helps keep the free Render service warm and reduces cold-start downtime.
- React
- Redux (for cart state)
- Jest (for testing)
- Mock data is used for restaurant and menu listings
- Coverage reports are generated after running tests
This project is for educational purposes only.