Library: react-cookie (for using cookie),react-redux (for using redux), react-icons, react-router-dom (managing route),runtime-env-cra(inject runtime environment on production environment), framer-motion(make animation)
Library: elasticsearch, flask, flask_migrate, Flask-SQLAlchemy(using sql), Flask-Cors, gunicorn (building docker container), pandas, psycopg2 (postgresql), pytest, pyjwt (make jwt token), python-dotenv, requests, requests-futures
Docker is used for building docker container to deploy on the kubenetes cluster
The Frontend and API was deployed on the kubenetes cluster
For deploying database and kubenetes cluster
According to the use case diagram in the requirements page, we are building the search, register, login, and privacy policy page by using react-router-dom and nginx (production) for managing route in react.
we build the google-like search-page in the home route. When the user click on the search form, the application will fetch the related API and show the result in the Resultlist components. The image below show the search page(before and after searching) respectively
the implementation details are shown below
use privacy-notice route to manage show our privacy policy
When the back-end API receives a search request, it parses the JSON object to retrieve the query and the filters. It then passes the request with parameters (query, filters) to the Controller which in turn sends it to the Model. The model stores a SearchEngine object, which has a search() method. This object sends a GET search request to the ElasticSearch API with the query and the formatted filters. When it retrieves the response, it formats it as a Pandas DataFrame and sends it to the model. Using parallel get requests to the X5GON api, the Model adds metadata to the search results. These results are then sent back to the Controller which translates it to JSON and sends it back to the API endpoint.
We create a PostgreSQL to collect the user details. We made the following API endpoint: register, login, and user-detail for handling the user action related to login functionality
Register - /register
Login - /login
User Details - /user-detail
Register
Login
We create a PostgreSQL to collect the search-history and click-history. We made the following API endpoint: search-history and click-history for handling the user action related to user data functionality
Search History - /search-history
Click History - /click-history
Search History
Click History