Develop by Caroline Parslow, Xinzhao Li, Larry Li for Dr. Peter Halpin at UNC-Chapel Hill.
Since the COVID-19 pandemic, students have been mostly participating in remote courses and losing a lot of opportunities to enjoy face-to-face classroom activities, the variety of which ranging from group discussions to worksheet collaborations. The project, born out of such observation, aims to be the pilot of online synchronous activities built for college students, allowing them to cooperate remotely and re-enjoy the precious face-to-face experience lacking in "video classrooms." Throughout the process of the activity, students are given an interactive map based on COVID-19 statictics and they are asked to take turns to collect information and cooperate through chats to answer a set of questions. Besides providing face-to-face experience, it also allows instructors to observe how well the students collaborate.
Before starting, Node.js will need to be installed. To do this, go to https://nodejs.org/en/download/ and follow the instructions on downloading for your operating system.
Then install the dependencies in the project by running npm install
in the command line.
To run a local server, run npm start
in the command line.
These instructions were last tested 11/12/2020 by Caroline Parslow on a Windows computer.
For the testing of thir project, we choose to use React Testing Library and Jest as our tool. The tests are under the folder of each components, following the naming convention ComponentName.test.js
.
Run npm run test
at root dir.
Run npm run test:coverage
at root dir. The detailed report will be in coverage
folder at root dir.
All the frontend code (this repo) is deployed on Netlify thus enabling Continuous Integration and Continuous Deployment. It also provides build check for each commit to this repo. For full access of the Netlify deployment, please contact Dr. Peter Halpin.
Our team, when developing, choosed to deploy the develop
branch to Netlify as a seperate deployment for any pre-prodcution testing that happened. It's not the elegant way, but it worked well.
There is no typical backend server for this project. But we do rely on 3rd party library TogetherJS, which has a server-side hub that handles all the inter-user communications. Optimistically and optimally, the hub hosted on https://hub.togetherjs.com
by TogetherJS should work. However, it didn't work when we worked on this project and solution is to host our own. https://useful-plant-eoraptor.glitch.me/
is the version hosted by Larry on Glitch. Logs are also shown and kept there. Since it's a very simple hub, which only echos whatever messages that it receives, we deployed it on Glitch, which is a lightweight server. However, for future performence and other potential issues, Heroku might also be a good choice.
About how to host your own hub, please refer to Instructions provided by TogetherJS also feel free to contact Larry.
Technologies used:
- ReactJS
- TogetherJS
- JavaScript
- Semantic UI
- Netlify
- TogtherJS Hub
The ADRs can be found in ADRs.md
-
New developers need access to these:
- The Github repository: https://github.com/liruochen1998/PeerLearningActivity (this repository)
- The Trello board: https://trello.com/b/rlw5FLCZ/team-o
- Netlify account
-
Conventions
-
Indentations in js files are 2 spaces.
-
To create a new React component, instead of manually doing it, run this command to automatically generate one:
npx generate-react-cli component MyComponent
, in which "MyComponent" is the name of your choice. This will generate the .js file, .css file, and testing file together for the component. Related configurations can be found in the file generate-react-cli.json.
-
-
Link to project website: https://tarheels.live/comp523peerlearning/
Larry Li [email protected] Github
Xinzhao Li [email protected] Github
Caroline Parslow [email protected] Github
GPLv3
We'd like to thank Perter Halpin for coming up with some a great project idea and for being so flexibile and interested in our input. We'd also like to thank Rodger Blair for his guidance and advice throughout the process. Lastly, we'd like to thank Dr. Jefferey Terrel for teaching us the process of developing software for a client.
The entry point is App.js
in ./src
. Anything else can be found in ./src/components/*
. All the components follow the naming convention that inside ./src/components/MyComponent/
, we can find 3 files for most components (except Map) MyComponent.js
, which is the main JS file, MyComponent.css
, which is the css file, and MyComponent.test.js
, which is the test file.
We use an iFrame to support the google form plug in. The file to configure is inside QaPanel/QaPanel.js
.
To change the number of log tables, change the settings in LogTableContainer/LogTableContainer.js
.
To change the color scheme of the map, change settings in Map/layerColor.js
.
The Layout of the Web UI can be changed by modifying the CSS file of each components. The CSS files are located inside the folder of each components.
To upload new data, add a file to the folder public/data
. Some naming conventions must be followed:
- If a heading includes more than one word, the words should be concatenated with an underscore. For example, the heading Total Tests should be
total_deaths
. - The date should be written in the form YYYY/MM/DD. For example, 2020-02-09.
- Netlify
- Glitch
- Google form
- Mapbox