Table of Contents
Have you ever been in a dilemma on which restaurant to pick based on the food that you would like to eat?
Cloudbites is an intuitive and user friendly application that aides with your restaurant selection process by equipping one with multiple processed data points to make a calculated decision.
- Massive collection of restaurants from Yelp dataset not restricting one to restaurants signed up with the app.
- Secure account creation, authorization and authentication.
- Searchable restaurant filter based on any relevant text.
- City based search filter.
- Interactive map with processed data to make selections from choices.
- Concise restaurant information like
- Name
- Timings
- Images
- Reviews
- Wordcloud of Reviews
- Unique recommendations
- Twitter feed based on search text
- React
- Redux
- deck.gl
- Mapbox GL
- Material UI
- Elastic search
- Redis
- Kafka
- ZooKeeper
- Flask REST server
- Natural Language Processing
- nginx
- Docker
- GitHub actions
- Prometheus
- Grafana
- GCP Cloud storage(Bucket)
- GCP Virtual machine
The project follows a microservice architecture. Follow the below steps to setup and run the application locally.
The following software, accounts and tools are required to get the project up and running:
- Google cloud account with active credits - To Provision VM and Cloud storage bucket to hold relevant details
- Docker - To run the containers locally
- Elastic search account - To load Yelp data and build meta engine
- Twitter developer account - To access Twitter's searching/streaming api
The application components are split into individual containers. So two docker files are required to be run in order to bring up the application.
- Either Git clone or download the code from GitHub
- Navigate to these two folders
app/react-ui
andapp/flask-api
separately and run the below commands:
docker compose pull
- To pull relevant Imagesdocker compose build
- To setup dependencies and the containersdocker compose up -d
- To run the container in detached mode
- Navigate to
localhost:3000
and you should be able to use the application. - The backend endpoints are accessible through
localhost:5000
- but some are access restricted.
- Type ahead feature in search bar leveraging Meta engine from Elastic search.
- Reverse image search to filter restaurants.
- Setting up websocket to populate relevant filtered tweets.
- Clickable recommended restaurants.
- Additional filters and data points.