teaching machines

CS 347: Lab 19 – GitHub Search

November 5, 2020 by . Filed under fall-2020, labs, webdev.

Welcome to lab. By now you have already watched the lecture videos on your own. Now we will apply the ideas from those videos in an exercise, which you will complete in small groups.

Within your breakout room, designate one of your team to be the host. Host, claim your group’s task on Crowdsource. Make sure to enter every group member’s JMU eID so that they receive credit. Your group will be assigned a task number.

Team, complete the assigned task below. Host, be careful not to dominate. All members should contribute ideas.


Your task is to write a React/Redux app that shows GitHub repositories matching a query. The matches will be provided by GitHub’s REST API. The end product will look something like this:


Host, follow these steps:

The next three sections can be done in parallel. Split them up between team members.


Create store.js that looks just like the one made in the videos. It uses the reducer (defined elsewhere) and the thunk middleware.


In index.js, add a Provider component and pass your store as a prop as demonstrated in the videos.


Create reducer.js with a similar structure to the one made in the videos. Use this initial state:

const initialState = {
  matches: [
      full_name: 'twodee/fiction',
      description: 'This repository does not exist.',
      html_url: 'https://github.com/twodee/fiction',

The reducer should handle just the default case for the moment. Whatever the action, return the unmodified state.


Define a Repository component in Repository.js. It receives a prop named repository, which is an object shaped like the example from the initial state shown above, having keys full_name, description, and html_url. Display the repository’s full name in an anchor tag and the repository’s description.


Your next task is to reach into the global store and turn its matches into viewable components. Complete the following steps in App.js.


Now that you’ve got the initial state showing, it’s time to add some actions to pull down new state from GitHub’s REST API. Complete the following steps.


Screen sharer, when your group is done or when time is up, submit just your group’s actions.js on Crowdsource.

Peer Review

After you have submitted the exercise, transition into your peer review for project 2. The following things should happen: