Giter VIP home page Giter VIP logo

pear-tutoring's Introduction

Pear Tutoring

This is the MICDS entry which won first place for the 2016-2017 hackathon hosted by World Wide Technology. It was made over the course of 4 months in our free time. Pear Tutoring is basically "the Uber of peer tutoring."

Pear Tutoring is a collaborative, peer-to-peer solution for bringing together tutors and tutees into one destination that allows for efficient scheduling and real-time collaboration on a synchronized whiteboard.

Technologies

We created an Angular 2 front-end which is hooked up to Firebase. Throughout the development process we used Slack for communication and GitHub projects to keep track of what features were in progress.

This project was generated with angular-cli version 1.0.0-beta.20-4.

Installation

First, grab the latest version of node.js. Clone and navigate to the repository, and type npm install -D to download all dependencies.

Development Server

For running the website locally, type ng serve and navigate to http://localhost:4200/. The app will automatically reload if you change any of the source files.

Deploying

One you're ready to deploy your changes to production, run npm run deploy on Linux/OSX or npm run deploy:win on Windows. Before your first deployment, you must install the Firebase CLI by running npm install -g firebase-tools and log in to your Google account added to the Firebase project using firebase login.

Hackathon

The MICDS team won first place winning $10,000 for our school!

Team

Pear Tutoring was made with the hard work of:

  • Jack Cai (2019)
  • Nick Clifford (2020)
  • Alexander Donovan (2018)
  • Michel Ge (2017)
  • Michael Gira (2019)
  • Sidd Mehta (2017)
  • Bob Sforza (2017)

Special thanks for the guidance of our faculty sponsor Mrs. Purdy!

Last but certainly not least, many thanks to our WWT mentors Barry Brandt and Charlie Harris!

MICDS Team at WWT Hackathon

pear-tutoring's People

Contributors

iprodigy avatar michaelgira23 avatar michelge0 avatar nickbclifford avatar rpsforza avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

sdnyanesh

pear-tutoring's Issues

Add notification system

Integrate the Desktop Notifications API into the site.

  • Notify tutors if students enroll in their session
  • Remind tutors/tutees when their tutoring session starts (Session starts in 15 minutes at location).
  • Integrate with chat messages

Add color palette

It would be nice to have an array of predefined colors the user can select (generic green, blue, yellow, etc.) and allow the user to add their own custom colors (may work nicely with the eyedropper tool).

Permissions for different components

For the session/chat/whiteboard, we need permissions. This will determine who can read, write, or anything in between. It would be nice to have a permissions system inspired by Google Docs.

Permission Modes

  1. Private - Nobody can access this item except the owner.
  2. Public - Anybody logged in can view the session/chat/whiteboard. It is publicly listed. Have the option for people logged out (anonymous users) to access as well.
  3. Unlisted - Session/chat/whiteboard is hidden from the public. Only specific people with a generated link can view the item. Have the option for people logged out (anonymous users) to access as well.

Within each "mode," the owner can decide whether the group can read/write. (Ex. Everyone with shareable link can edit the whiteboard, or anonymous people can only read the whiteboard.)

All of these permissions can be overwritten by the owner, who can manually add people to the session/chat/whiteboard, and specify their permissions. (Ex. [email protected] can write on the whiteboard).

Scopes

It would probably be best to setup the permissions in a flexible 'scopes' system, which can be used to give a user any mix of permissions. The basic permissions should be something like:

  • read - User who has the read scope can view the component.
  • write - User who has the write scope can edit basic things (add markings to whiteboard, send message in chat).
  • moderator - This possible scope may not be applicable to all components, but could allow a user to have more permissions than the regular person (Invite other people to the whiteboard/chat, possibly even change permissions?)

These scopes are just general guides. You can split these scopes up, remove some, or add other scopes that may be applicable to a specific component. The owner should automatically have permissions of all the scopes, and the owner may not remove any of their permissions.

Add Shapes Tool

Add a tool that allows for the creation of basic shapes (squares, circles, ovals, etc.)

Add eyedropper tool

Have an eye dropper tool to grab the color of an existing object on the whiteboard. If the user selects the center of an object, it should grab the fill color. If the user selects the side of an object, it should grab the stroke color. It would also be nice to grab the background color if it is selected.

Componentize

Wrap the whiteboard in an Angular Component that can easily be deployed across the platform

Add Eraser Tool

Create an eraser tool that can hide markings from the whiteboard display

Add join and leave messages

Have a "$user joined" and "$user left" when a user joins or leaves a chatroom. If the user is not logged in, it should probably say "An anonymous user joined" and "An anonymous user left".

Pagination

pagination when displaying sessions and other stuff

Allow for regularly scheduled sessions

Allow for peer tutoring sessions to occur at specific intervals (Ex. A tutor and tutee meet every Wednesday after school, etc.) Also allow these session intervals to be cancelled permanently or possibly temporarily (if a user goes on vacation or something? sick?)

Allow tutors and tutees to input times they are available

Allow tutors and tutees to input times they are available, and suggest pairs based on these free times. Allow the user to input their available times per week day (when they're free Monday, Tuesday, etc.) or possibly by MICDS schedule day rotation (Day 1, Day 2... Day 6) or possibly both (every Wednesday, Day 3).

ngOnChange spam when switched to week view in calendar

When week view is opened in the session-calendar component, ngonchanges, which is originally only listening to changes in the 'session' @input for the component, starts to listen to all of the mouse move and scrolling events, calling ngOnChanges() handler in the component.

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.