Rashi1997 / Search-Github

App to search through Github repositories!

Home Page:https://agile-crag-93359.herokuapp.com/#

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MIT License LinkedIn


Logo

Search Github

A React app to look for popular repositories by keywords and topics!
Explore the docs »

Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Architecture
  4. Usage
  5. Roadmap
  6. Contributing
  7. License
  8. Contact
  9. Acknowledgements

About The Project

App Name Screen Shot

There are many great repositories templates available on GitHub, however, I didn't find one good search platform to search through the repositories by many filters. I created a search app in react through which you can filter and sort on repositories to find any public repository.

A list of commonly used resources that I find helpful are listed in the acknowledgements.

Built With

Getting Started

Prerequisites

Make sure you have npm installed!

  • npm
    npm install npm@latest -g

Installation

  1. Clone the repo
    git clone https://github.com/Rashi1997/Search-Github.git
  2. Install NPM packages
    npm install
  3. Runs the app in the development mode
    npm start

Architecture

The component architecture of the app is as follows:

Logo

Lets go through each component:

Filtered.jsx

/**
 * This component does the Github API call and does
 * the filtering/sorting. It also has props and methods
 *  to aggregate bookmarks.
 * 
 * States: 
 *        error
 *        isLoaded
 *        data
 *        filtered
 *        searchname
 *        languagefilter
 *        topicsfilter
 *        sort
 *        bookmark
 *        countByLanguageTopics
 * 
 * Props: 
 * 
 * Child Components: 
 *        Drawer.jsx
 */

Drawer.jsx

/**
 * This component loads the sidebar and the 
 * form. The bookmarks and repository cards are loaded
 * as child components.
 * 
 * States: 
 *        open
 * 
 * Props: 
 *         searchname
 *         handleChange
 *         topicsfilter
 *         settopicInput
 *         getuniquetopics
 *         filtered
 *         languagefilter
 *         setlanguageInput
 *         getuniquelanguages
 *         sort
 *         radiochange
 *         reset
 *         addBookmark
 *         removeBookmark
 *         bookmark
 *         countByLanguageTopics
 *         error
 *         isLoaded
 *
 * Child Components: 
 *        Cards.jsx
 *        Bookmarks.jsx
 */

Cards.jsx

/**
 * This component loads the cards for each repository
 * in the filtered state or the bookmarks. This component
 * is reused both in Bookmarks.jsx and Drawer.jsx components.
 * It also checks for error from API call and the isLoaded 
 * state before displaying cards.
 * 
 * States: 
 * 
 * Props: 
 *         bookmark
 *         filtered
 *         addBookmark
 *         removeBookmark
 *         error
 *         isLoaded
 *
 * Child Components: 
 *        RepoCard.jsx
 */

Bookmarks.jsx

/**
 * This component loads the word cloud visualization
 * for bookmarks based on langugae and topics frequency.
 * It also loads all the cards for the bookmarks and 
 * the user can remove the bookmarks from here.
 * 
 * States: 
 *        open
 * Props: 
 *        addBookmark
 *        removeBookmark
 *        bookmark
 *        countByLanguageTopics
 * 
 * Child Components: 
 *        Cards.jsx
 */

RepoCard.jsx

/**
 * This component loads the code for a single card repository.
 * 
 * States: 
 * 
 * Props: 
 *        repo
 *        addBookmark
 *        removeBookmark
 *        bookmark
 * 
 * Child Components: 
 * 
 */

Usage

The Web App can be used to search for the first 12 repositories on a keyword matching the repository name and description. The repositories listed can be filtered on language and topics and sorted on stars. The filters can also be reset. The app also allows you to bookmark repositories and view the bookmarks together with word cloud visualization.

For more examples, please refer to the Website

Roadmap

See the open issues for a list of proposed features (and known issues).

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Rashi Dhar

Project Link: https://github.com/Rashi1997/Search-Github

Acknowledgements

About

App to search through Github repositories!

https://agile-crag-93359.herokuapp.com/#

License:MIT License


Languages

Language:JavaScript 92.1%Language:HTML 4.4%Language:CSS 3.5%