This project was bootstrapped with Create React App.
In the project directory, you can run:
This will install all required dependencies.
Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.
Created a searching custom hook, which mangages the state of loading, the data values here used as user, and uses the debounce 'util'.
I've used a debounce util to limit the frequency of xhr calls.
State mangagement is handled by React-hooks, primarily using useState, useEffect, useRef.
To not load huge data sets in one go which will create a burden and make the app slow, I've used the principle of infinte scroll. Intersection observer has been used to find when the last element of current iteration is shown to the user, at that moment we call the next page of Github API.
For all these states, I've currenty used a simple