Yelp Prototype is a clone of the real Yelp app that concentrates on Restaurant-Customer relation where a restaurant lists dishes and user orders from it. The restaurants can register, login, update profile, add/update dishes, and add future events. The users can register, login, update profile, search for restaurants, order from restaurants, review restaurants, and register for events. The application has functionalities like search/filter/sort restaurants based on delivery methods and ratings, orders filtering for both restaurants and users, and sort events by date. To enhance user experience of the app, client-side pagination is used for listing of restaurant dishes and events. The app also has Google Maps embadded in it so that just by a click, a user would get the direction. One of the highlighting features of the app is its real-time chat system which is developed using socket programming where only a restaurant can initiate the chat and user can reply back. For Backend, each route is secured thanks to PassportJS and JWT where only an authorized user can consume a particular backend route.
The application is developed following Test-Driven Development
approach where each module is unit tested. The Backend unit tests are created using Chai and Mocha frameworks. The Frontend unit tests are created in Enzyme and Jest. JMeter is used to test the performance of the application under hundreds of concurrent requests load.
-
Use
docker-compose.yml
file to build and run the application. The file builds and creates two docker containers, one forbackend
and the other forfrontend
. -
To deploy the application on server, provide a root level
.env
with appropriate values. For example,
BACKEND_URL="http://localhost"
FRONTEND_URL="http://localhost"
BACKEND_PORT=3001
FRONTEND_PORT=3000
- Build the images
docker-compose build
- Run the application
docker-compose up
- Install necesary node modules for both frontend and backend
cd backend
npm i
cd ../frontend
npm i
- Start frontend and backend server
cd backend
npm start
cd ../frontend
npm start
- NodeJS
- PassportJS
- Kafka
- JSON Web Tokens
- Chai
- Mocha
- MongoDB
- ReactJS
- Redux
- Bootstrap
- Enzyme
- Jest
- Docker-compose
- GCP