Google is a best search engine, but what if you are tired of using it and want to try something different. Google's search result is too good to be true. Don't you want to see something worse for once?
It is an overcomplicated search app made to compete for the topic described below:
Rube Goldberg machines are overcomplicated systems that perform simple functions. The top prize awarded at Mountain Madness is the Rubey, won by the most impressively overengineered project that still manages to perform a useful task.
What we hope to see from submissions for the Rubey are impressive technological accomplishments applied to silly or trivial uses. Some examples and inspiration:
- A magic eight-ball program that, given a query, simulates a large network and runs a distributed consensus algorithm to arrive at its answer
- The echo command line tool, but each character is printed by a new Docker container
- Shazoom—an iPhone app that builds an Android virtual machine, installs Shazam on it, and then runs Shazam on the virtual machine
This is the perfect opportunity to try out your favourite solution that you don't have a problem for! If you are competing for this prize, come up with your idea quickly and run it by the organizers to make sure it has merit.
The app is composed of a web front-end and two nodejs back-ends.
- A user types a keyword on the search bar in a browser (front-end).
- The keyword sends back to Back-end#1(BE1), then it opens up a browser with selenium and searches the same keyword on google.
- BE1 then sends a post request to Back-end#2(BE2) and tell BE2 to take a picture of BE1's screen (yes, for this to work, we need two laptops running the two BEs and placed them face to face).
- BE2 sends the picture back to BE1, which processes the picture taken in https://www.onlineocr.net/ and records the result.
- BE1 extracts the text from the picture, and sends both the picture and text to the font-end.
- Users can enjoy the super helpful elgooG result.
- Run
npm install
in both BE and BBE(Backend of BE) directory. - Add .env in both BE and BBE directory and put
PORT=SOMEPORT#
. - In BE/server.js change the url in line 40 to whereever BBE is hosted at.
- Run
npm start
in both BE and BBE.
- Use OCR(Optical Character Recognition) to recognize text.
- Use OpenCV to find ROI(Region Of Interest).
- Train our own model to classify characters. Since all characters are typed, not hand written, it is easy to collect data and recognize them.
- Use Google Search API to send Http request to get results.