Giter Site home page Giter Site logo

coursetable / coursetable Goto Github PK

View Code? Open in Web Editor NEW
54.0 54.0 19.0 61.75 MB

Code powering the CourseTable website

Home Page: https://coursetable.com

License: MIT License

JavaScript 0.47% TypeScript 87.33% Shell 0.46% Dockerfile 0.10% CSS 6.31% HTML 0.39% MDX 4.94%
college courses graphql hasura open-source react reviews typescript university vercel yale

coursetable's Introduction

Coursetable

Maintainability GitHub commit activity GitHub contributors HitCount

Production CD Staging CD Ferry Run

Coursetable is made of two big parts:

  1. Website: The site you see when you go to coursetable.com. The code for this – the front-end site as well as the back-end server that handle user actions – is contained within this repository.
  2. Crawler: The scripts behind the scenes that actually get all the data from Yale’s websites. The code for this is in our ferry repository.

Repository Layout

The various functions of the website are compartmentalized as follows:

  • /api: Source code for API server with Docker Compose configuration for backend logic.
  • /frontend: The current face of the site, built with React.

How to develop

Check out our contributing guide.

How to deploy

Deployments are automatically handled via GitHub Actions workflows. If necessary, you can also manually deploy. For all instructions relevant to deploying our code, see docs/deployment.md.

powered-by-vercel

coursetable's People

Contributors

achrysaetos avatar auchtopus avatar bearsyankees avatar benzuzu avatar course-table avatar dependabot[bot] avatar deyuanli8 avatar erikboesen avatar etherite1 avatar hl723 avatar hsheth2 avatar hsource avatar imgbot[bot] avatar imgbotapp avatar jlv34 avatar josh-cena avatar joshuachough avatar kentng01 avatar kevinhu avatar lilyzhouzyj avatar matthew-siff avatar maxyuan6717 avatar muavli avatar neilsong avatar nsnave avatar petertravelchime avatar pxpeterxu avatar quintec avatar stephenyin01 avatar ytchang05 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

coursetable's Issues

Rewrite crawler

In GitLab by @hsheth2 on Sep 7, 2019, 12:57

Currently the crawler and web portions use the same instance of MySQL. Ideally, they should use different instances and operate more independently of each other.

Add more descriptors to timetable courses checklist

In GitLab by @k3vnchen on Sep 23, 2019, 14:22

The course checklist in the timetable view has only the course title; courses with multiple sections appear as multiple identical list items with no differentiation. We should add the course section or descriptors with meeting time/professor.

Set up a staging server

In GitLab by @hsheth2 on Sep 5, 2019, 20:44

A staging server, which deploys on a schedule (daily from the master branch?), would facilitate more ambitious changes without worry of breaking the main CourseTable site.

Show what subject area abbreviations mean

In GitLab by @ErikBoesen on Sep 23, 2019, 14:35

As far as I can see there is no way to see what various abbreviations (for example "BIS" or "CPSC") mean if you don't already know.

BIS -> Biostatistics
CPSC -> Computer Science

Fixed `npm install` in docker, updated insecure packages !6 - [merged]

In GitLab by @hsource on Sep 14, 2019, 01:26

Merges harry/docker-npm-audit -> master

npm install by default implicitly checks whether any packages have security vulnerabilities, and fails to install if that's the case. This change:

  1. Fixes the security vulnerabilities
  2. Makes npm install run via the npm run install-and-watch continue even if there are security vulnerabilities

For reference: this is the problem we'd run into before this change.

/var/www/html # npm install
npm WARN [email protected] requires a peer of acorn@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of ajv@^6.9.1 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of eslint@>= 4.12.1 but none is installed. You must install peer dependencies yourself.

audited 40049 packages in 25.132s
found 1209 vulnerabilities (1 moderate, 1208 high)
  run `npm audit fix` to fix them, or `npm audit` for details

Fixed `npm install` in docker, updated insecure packages !6 - [merged]

In GitLab by @hsource on Sep 14, 2019, 01:26

Merges harry/docker-npm-audit -> master

npm install by default implicitly checks whether any packages have security vulnerabilities, and fails to install if that's the case. This change:

  1. Fixes the security vulnerabilities
  2. Makes npm install run via the npm run install-and-watch continue even if there are security vulnerabilities

For reference: this is the problem we'd run into before this change.

/var/www/html # npm install
npm WARN [email protected] requires a peer of acorn@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of ajv@^6.9.1 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of eslint@>= 4.12.1 but none is installed. You must install peer dependencies yourself.

audited 40049 packages in 25.132s
found 1209 vulnerabilities (1 moderate, 1208 high)
  run `npm audit fix` to fix them, or `npm audit` for details

Export course worksheet to ICS

In GitLab by @hsheth2 on Sep 5, 2019, 20:49

This could be used to add a calendar subscription which directly adds course times, dates, etc. to a calendar (e.g. Google Calendar) via a live ICS feed.

Moving to open source on GitHub

In GitLab by @hsheth2 on Sep 12, 2019, 17:54

We would like to eventually move to GitHub, and make the repo public.

Before doing so, we need to make sure that all secrets are purged from the repo and git history.

Centralize Logging Infrastructure

In GitLab by @hsheth2 on Sep 5, 2019, 20:36

Currently we use a home-grown PHP logging framework. It would be nice to transition to a standard and well-supported logging library instead.

Once this transition is done, it might enable us to use a better, more centralized logging mechanism and set up alerting for issues.

Transition to React

In GitLab by @hsheth2 on Sep 5, 2019, 20:34

This is a tracking issue for the migration to React.

It is not urgent.

Course recommendation system

In GitLab by @hsheth2 on Sep 6, 2019, 22:48

It would probably be fairly easy to build a rudimentary recommender system to suggest classes that people with similar interests have also taken.

Prune/manage vendored PHP libraries

Most of our PHP libraries are currently located in the web/libs directory. A fair number of them appear to be unused or very lightly used (e.g. swift). These we should remove. For the rest of the libraries (e.g. smarty, CAS), we should start bundling them via Composer when possible.

Fixed `npm install` in docker, updated insecure packages !6 - [merged]

In GitLab by @hsource on Sep 14, 2019, 01:26

Merges harry/docker-npm-audit -> master

npm install by default implicitly checks whether any packages have security vulnerabilities, and fails to install if that's the case. This change:

  1. Fixes the security vulnerabilities
  2. Makes npm install run via the npm run install-and-watch continue even if there are security vulnerabilities

For reference: this is the problem we'd run into before this change.

/var/www/html # npm install
npm WARN [email protected] requires a peer of acorn@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of ajv@^6.9.1 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of eslint@>= 4.12.1 but none is installed. You must install peer dependencies yourself.

audited 40049 packages in 25.132s
found 1209 vulnerabilities (1 moderate, 1208 high)
  run `npm audit fix` to fix them, or `npm audit` for details

Fixed `npm install` in docker, updated insecure packages !6 - [merged]

In GitLab by @hsource on Sep 14, 2019, 01:26

Merges harry/docker-npm-audit -> master

npm install by default implicitly checks whether any packages have security vulnerabilities, and fails to install if that's the case. This change:

  1. Fixes the security vulnerabilities
  2. Makes npm install run via the npm run install-and-watch continue even if there are security vulnerabilities

For reference: this is the problem we'd run into before this change.

/var/www/html # npm install
npm WARN [email protected] requires a peer of acorn@^6.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of ajv@^6.9.1 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of eslint@>= 4.12.1 but none is installed. You must install peer dependencies yourself.

audited 40049 packages in 25.132s
found 1209 vulnerabilities (1 moderate, 1208 high)
  run `npm audit fix` to fix them, or `npm audit` for details

Worksheet list/timetable should refresh automatically

In GitLab by @ErikBoesen on Sep 12, 2019, 12:13

While using the worksheet list/timetable view this semester, I found myself getting pestered by the way that when I removed an item from my worksheet, I had to refresh or go to another panel then return to the calendar before that course would disappear from the sheet. I think this should occur automatically.

Filesystem reorganization

  • Delete unused TPL files
  • Remove unused directories/files
  • #57
  • gen directory should be separated to different directories. Smarty templates should be somewhere else, js may not be in use so we should research this, and json should be shared between crawler and web and should be accessible to the filesystem from PHP but not publicly-facing through CourseTable.com. Could solve this with .htaccess file or move it somewhere else and have PHP retrieve it, wherein you'd lose static serving. gen directory should itself disappear eventually.

UI: Sync changes between cross-listed courses

In GitLab by @hsheth2 on Sep 5, 2019, 20:30

For example, assume a class is listed as both CPSC 235 and EENG 245. If a user adds CPSC 235 to their worksheet, then the EENG 245 entry should indicate that it was already added via a cross listing.

How exactly this should behave is still up for debate. It's also unclear if this would require any changes to the backend.

Course description hover gets cut off

When hovering over the titles of courses in the table, the boxes that show up for the top ~6 entries get cut off. (This is pretty low priority but just wanted to make a note of it.)

Unit Tests

In GitLab by @hsheth2 on Sep 5, 2019, 20:38

This is a tracking issue for all unit testing endeavors.

Ideally, we would like to add tests for all parts of the system. Given the tight coupling of the view and presenter, this will be tough right now.

Continous integration setup

In GitLab by @hsheth2 on Sep 12, 2019, 13:00

Once we have some tests set up, we should have a CI pipeline to validate all commits and pull requests.

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.