Giter Site home page Giter Site logo

knox153 / student-dashboard Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ubc-la-hackathon/student-dashboard

0.0 1.0 0.0 1.67 MB

Let's build a modern web app using your data from Canvas!

Home Page: https://events.ctlt.ubc.ca/events/2020-spring-learning-analytics-hackathon/

License: MIT License

JavaScript 82.88% HTML 11.11% CSS 6.00%

student-dashboard's Introduction

Welcome to the 7th UBC Learning Analytics hackathon! This hackathon is really a workshop, so we're going to be referring to it as a workshopathon from here on out.

This repo contains the basic backend and frontend components of the Student Dashboard application you will be building. By the end of this workshopathon, you should have a working web application that displays your own Canvas data using the Canvas API.

We will also provide other data sources that you are welcome to integrate to build more advanced tools and visualizations.

Due to the compressed nature of this workshopathon, we'll be covering a lot of ground in not a lot of time. You don't need to fully understand everything. There are lots of links to external readings and tutorials within Tasks that you're welcome to explore. And remember that this repo will always be a resource you can access in the future (so give it a star)!

Sound good? Register for this free event!

Table of Contents

  1. What You'll Learn
  2. What You'll Build
  3. Ask For Help
  4. Schedule
  5. Getting Started
  6. Code Overview
  7. Tasks
  8. Project Showcase
  9. Organizers
  10. Volunteers

๐Ÿ“š What You'll Learn

By completing this workshopathon, you'll learn to:

๐Ÿ”จ What You'll Build

You'll be building a web application that displays a heatmap of what days of the week and what time of the day you and your peers (and your instructor) are most actively posting in the discussion forum of a course.

It should look something like this: heatmap

After you've completed the heatmap, you can either add more features to the heatmap or use the tons of data we provide to build entirely new tools and visualizations.

๐Ÿค” Ask For Help

We don't expect you to come into the workshopathon with any prior knowledge. You may never have coded before - that's okay! You're here to learn, and we're here to help.

There are many volunteers here with lots of software development experience who are happy to help.

And if you're already comfortable with some of the technology we're using, please help your neighbours!

๐Ÿ“… Schedule

Friday, March 13

  • 5:00pm - Design Thinking Workshop
  • 6:30pm - Social (pizza and pop)

Saturday, March 14

  • 9:30am - Doors Open (coffee and pastries).
  • 10:00am - Introductions and Welcome to the Workshopathon! We'll give you an overview of the tasks and get you set up with this repository.
  • 10:15am - Start hacking!
  • 12:30pm - Lunch.
  • 1:00pm - Check-in.
  • 3:00pm - Check-in.
  • 4:30pm - Demos!
  • 5:30pm - End of Workshopathon.

โš™๏ธ Getting Started

These instructions will get you a copy of the project up and running on your local machine for use with your own Canvas API tokens.

Prerequisites

  1. Install Node 12.0.0 or greater.
  2. Install Git.
  3. Install Visual Studio Code (optional but recommended).
  4. Install Brave or Firefox, since Chrome is spyware (optional but recommended; the volunteers are more familiar with using the devtools of Brave or Firefox).

Installation and setup

  1. Fork this repo. fork
  2. Copy clone link. clone
  3. Open terminal on Mac or command line on Windows. We like to use VSCode's integrated terminal, as it works for both Mac and PC.
  4. Clone repo. git clone {paste URL you copied}
  5. Navigate into repo. cd student-dashboard

Backend

  1. Navigate into backend repo. cd backend
  2. Install required dependencies. npm install
  3. Start server. npm start
  4. In terminal, you should see Example app listening on port 4001!.

Frontend

  1. Navigate into frontend repo. cd frontend
  2. Install required dependencies. npm install
  3. Start frontend application. npm start
  4. Your browser should start. If not, navigate to http://localhost:3000/. You should see Welcome to the Workshopathon, attendee!.

๐Ÿ’พ Code Overview

Dependencies

Backend

Frontend

  • reactjs - JavaScript library for building user interfaces.
  • Victory - React components for easily building data visualizations.
  • D3.js - The de facto way to build data visualizations on the web, somewhat painfully.

Application Structure

stack-diagram Our web application will involve three autonomous entities (two of which we build):

  • a frontend React application
  • a backend Node.js/Express application
  • the Canvas API (accessed through node-canvas-api)

These three entities run independently but communicate with one another by exchanging data via API endpoints. Our Node backend will be responsible for querying the Canvas API, processing the data returned, and hosting that data at API endpoints (that we create) for our frontend application to read and render to the browser.

Backend

  • server.js - The entry point into our backend code. It starts the express server and is responsible for handling requests the frontend makes, making requests to the Canvas API, and reading/sending data to the frontend.
  • canvasDiscussions.js - Exports two functions, getDiscussions and flattenTopicAndReplies. The first takes as input a Canvas course id and pulls discussions from that course in a way that preserves the threaded nature of replies to discussion topics. The second flattens the topics and replies to make it easier for generating the heatmap.
  • readCSV.js - Simple utility for reading CSVs painlessly. Takes as input the path to the CSV.

Frontend

  • App.js - The top-level React component that is responsible for fetching data and passing data down to child React components.
  • Discussion.js - Discussion modifies the data passed by App and passes it down to the child Heatmap.
  • Heatmap.js - Renders the heatmap using D3.js.

โœ… Tasks

  1. Create a Canvas API token and make calls to the Canvas API
  2. Create API endpoints in backend
  3. Make API calls from frontend to frontend
  4. Create data visualization dashboard
  5. Create more advanced data visualizations/tools
  6. Share your work
  7. Feedback and thanks

Project Showcase

At the end of the workshopathon, you can put a link to your work here!

Organizers

This hackathon is a collaborative effort by the UBC Learning Analytics project, LAVA (Learning Analytics, Visual Analytics), and Sauder Learning Services, with staff volunteers from Faculty of Arts, Faculty of Education, Sauder School of Business, and the Centre for Teaching, Learning and Technology.

A big thank you to Sauder Learning Labs for providing a space designed to facilitate teams in using critical thinking and analytical decision making to solve real-world problems.

Volunteers

And another big thank you to our volunteers from outside of UBC. TODO: Add list of volunteers

student-dashboard's People

Contributors

justin0022 avatar markoprodanovic avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.