Git Product home page Git Product logo

omshub / website Goto Github PK

View Code? Open in Web Editor NEW
55.0 6.0 8.0 11.78 MB

Unofficial reviews site for Georgia Tech's Online Master of Science (OMS) programs. Contact: [email protected]

Home Page: https://omshub.org

License: GNU General Public License v3.0

Shell 0.05% JavaScript 76.64% TypeScript 22.44% Dockerfile 0.04% CSS 0.24% MDX 0.59%
computer-science education firebase nextjs typescript vercel georgia-tech georgia-tech-masters oms omsa

website's People

Contributors

ashiquem avatar austinoboyle avatar awpala avatar csc5nz avatar ctran4347 avatar dependabot[bot] avatar disposedtrolley avatar driscoll42 avatar herman-rogers avatar imgbot[bot] avatar knakamura13 avatar omshub-admin avatar shaun-jacks 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

website's Issues

[FEATURE] Scaffold Playwright for E2E testing

Is your feature request related to a problem? Please describe.

As an outcome of #10, scaffold some basic Playwright tests to ensure core functionality works as expected.

Describe the solution you'd like

Playwright tests that exercise core functionality of the site. Tests should run against Vercel preview builds in PR branches and against prod after merging to main.

The scope of the initial work should cover:

  • Setting up a Playwright configuration and single test case.
  • Adding a GH Actions job to execute Playwright against the appropriate Vercel build (need to figure out if it’s possible to fetch the URL that Vercel generates for preview builds, or alternatively if the URL is deterministic against the branch name, how we can dynamically compute the URL)

[FEATURE] Automate making changes to the OMS curriculum (courses, specializations, tracks, etc...)

Is your feature request related to a problem? Please describe.
Keep site data up-to-date

Describe the solution you'd like
Web scraping the data, clean and insert into relevant tables in db. Scrape both omscs official site and omscentral on a daily basis, clean and normalize the data, then update relevant tables.

Describe alternatives you've considered
ools to consider here are python scrapy for scraping data, and python pandas to normalize and clean it. Some relevant tables also should be added to the DB

Additional context
The data should be extracted into an 'offline' db, so in case of an error in scraping the data of the site is not deleted. Maybe more thinking should be taken into account how the data is being passed from the 'offline' db into the production one

[FEATURE] Additional course metrics

Is your feature request related to a problem? Please describe.
OMSCentral displayed a simple arithmetic mean for all available metrics (workload, rating, difficulty etc). This may be misleading as course syllabus, instructing team and logistics change over time.

Describe the solution you'd like
Keep the overall metrics and display additional data only for the last two semesters (or a reasonable lower bound).

Describe alternatives you've considered
Display a graph of the metrics over time (similar to steam ratings).

[DISCUSSION] Determine relationship or lack there of with OMSCentral

Similar to #22 a discussion should be had with Mehmet (possibly Martz too) about any collaboration, relationship, etc... with OMSCentral. It would be in the best interest of the community to have one site and not two and cannot emphasize enough the gratitude the community has for OMSCentral, but one that is community owned is probably best.

[FEATURE] Wordclouds

Is your feature request related to a problem? Please describe.
There can be hundreds of reviews and hard to pull out themes of the reviews

Describe the solution you'd like
A wordcloud of the content of the reviews could be interesting to see what stands out in the reviews

Describe alternatives you've considered
N/A

Additional context
N/A

[FEATURE] Make website analytics visible

Is your feature request related to a problem? Please describe.
Not a problem, but it would be interesting to make details on the website visible.

Describe the solution you'd like
By that I would mean seeing how many people visited each month, which courses were most viewed, etc... I'm not fully certain what is possible, but the more transparency the better. Here's some reddit stats that are similar to what I had in mind, or ones from Google Analytics.

[CORE FEATURE] Transparent Funding

Is your feature request related to a problem? Please describe.
The core issue inspiring this site was the paywall going up on OMSCentral.

Describe the solution you'd like
To inspire confidence in a new site by users, all financials related to the site should be transparent, costs, donations, etc... Probably a quarterly or yearly report on server costs, maintenance, etc... with how many people donated money.

[DOCUMENTATION] New user guide

Add a markdown file describing the general overview of the app & architecture, how to run locally, etc. May involve pulling some information out of / trimming down the general README

[FEATURE] User Authentication

Is your feature request related to a problem? Please describe.
What is the end user authentication scheme we should use, if any?

Describe the solution you'd like
First, we should decide if we are going to need a user authentication feature, and when.
Second, we should determine what's the best authentication scheme for our use case. Should we go with something like Auth0, Firebase Authentication, et cetera.

Describe alternatives you've considered
Without getting to far into our plans for end user authorization, I think we need authentication to allow us to tie reviews to individual users and give them provenance over their data and allow operations such as "delete my review".
A "nice to have" feature would be to ensure that people signing up have a gatech email address

One possibility is that we don't have any authentication system. Everything remains anonymous, we simply don't know! Just like anyone can see all the reviews, anyone can post a review. This would imply that reviews cannot be deleted, at least by end users. This might also mean that we have to "clean up" obviously fake reviews and spam content, so we might need a reCAPTCHA or other mechanism to avoid that.

Additional context
OMSCentral currently has user authentication. The authentication system is using Firebase, and there are user specific tasks: like add a review, or delete a review. OMSCentral has not always had authentication.

[FEATURE] Allow for the site to be used for OMS degrees offered other than GA Tech

Is your feature request related to a problem? Please describe.
It is a bit presumptuous to call us OMSHub as that just means "Online Masters in Science Hub" so kind of implying all other online masters in science are applicable, but definitely we don't mean that at the moment.

Describe the solution you'd like
Have a landing page where you pick your university and directs you to gatech.omshub.com or uiuc.omshub.com or utexas.omshub.com, etc...

Additional context
This is very much not a MVP feature and likely not a feature we will ever implement, but it is worthy of discussion and consideration.

[FEATURE] New Logo

Currently there is no logo for OMSHub and one would be needed for branding purposes. Note we cann0t use Buzz from GA Tech

[FEATURE] Set up the data access layer

Prerequisite: #1

Scope:

  • adopt an ORM library
  • implement the initial data model in the backend

Prisma is a good library to consider. It would provide out of the box:

  • An intuitive way to write queries (similar to ActiveRecord)
  • Input sanitization
  • Type safety (automatic mapping between database tables and typescript types that can be used both on the backend and the frontend)
  • Migrations

It has good documentation and integrates well with next.js.

Other alternatives to consider: goose, typeorm

[FEATURE] Create a Terms of Service

Is your feature request related to a problem? Please describe.
In order to be sure everyone is clear on the data, we need a Terms of Service to be clear on what is being done with the data

Describe the solution you'd like
A ToS page for people to view

[FEATURE] Add GitHub Action to run linting

Add a GitHub Actions job to execute yarn lint and also ensure Prettier formatting rules have been followed.

This job should run on branches with an open PR to provide quick feedback to authors.

[FEATURE] Commenting on reviews for discussion

Is your feature request related to a problem? Please describe.
Reviews are given with not discussion

Describe the solution you'd like
Allow for commenting on reviews to have discussion on what is in a review.

Describe alternatives you've considered
This may encourage some trolling, or useless chatter. I feel we would need to enable notifications to the reviewer to let them know about a comment.

Additional context
N/A

[INVESTIGATION] Explore similar websites for ideas

MSCSHub/MSDSHub should be investigated for what features to copy to a new site to make the site more useful, but without being too cluttered. After exploration new issues/feature requests should be made.

[FEATURE] OMS Resources/Guides

In order to make the website more useful for students, resources/guides could be added to the site to help future students. Such things could include "How to do research" "how to prepare for classes" and similar. Though this could be similar to some of what is on wikidot, omsa.ga/omscs.ga so there would need to be a means of not overlapping, and augmenting.

[ADMINSTRATIVE] Determine involvement with GA Tech

Is your feature request related to a problem? Please describe.
Ideally this site would be at least semi-officially supported by GA Tech, Dr. Joyner for example, possibly with funding support but at least approval.

Describe the solution you'd like
Once MVP is basically done, have a discussion with Dr. Joyner about the future of the site and how this site could work with GA Tech.

[FEATURE] FAQ page

Is your feature request related to a problem? Please describe.
New students usually ask the same questions every semester in Reddit and Slack.

Describe the solution you'd like
Add an FAQ page with well written answers to common questions from other sources and provide attribution.

[FEATURE] Create Course Maps for the specializations/tracks

Is your feature request related to a problem? Please describe.
UT Austin has some fantastic course maps: https://mscshub.com/courseMap It'd be great to have similar

Describe the solution you'd like
Would probably be best to make one per specialization, and to basically copy what they did, I made a sample of a rough draft of a ML spec one below. Would need some community help to figure out how it should look for all the various specializations/tracks/courses. Further how/should non-spec/track courses be included?

Additional context
image

[ADMINSTRATIVE] Organizational Planning

In preparing the legal paperwork to establish a non-profit entity, we will first need a charter. Please list the following items:

Name of Organization
Purpose or the org.
Goal of the org.
Board structure (i.e. 5 people, 2 year terms, staggered - director, secretary, treasurer, member, member)
Will be setting up non-profit (501-C3) in Delaware or Nevada. Please let me know of a reason you cannot use one of these states.

[FEATURE] Create a Job Board

Is your feature request related to a problem? Please describe.
A review site would be seen by a number of recruiters, users, etc... and having a job board could allow for them to advertise positions at their company. In theory it could allow for the site to be self-funding without requiring donations.

Additional context
This would be fraught with all sorts of potential issues, how to post, how to charge, if to charge, etc... This should be discussed, but not until later.

[FEATURE] Allow user to record reviews without main body

With this feature we can:

  1. encourage students to quickly record each course they have taken
  2. allow us to take a more complete user profile and expand our data points
  3. open the door to course recommendation, which could be as simple as X% of students taking A while taking B, X% of students taking B after finishing A, or even an actual recommender system

We need to:

  1. give an option to add the review later
  2. ignore ratings coming from records without the body

Let me know if it makes sense, thx

[FEATURE] Configure Vercel with Terraform

We should consider using Terraform to configure our Vercel resources (project, custom domain, and deployments). This gives us a repeatable way to deploy our infrastructure, and acts as a form of documentation. The Terraform code can live in a separate ops repo or similar.

Links:

[FEATURE] Allow for upvote and maybe downvote of reviews to find the most "helpful" ones

Is your feature request related to a problem? Please describe.
Generally reviews are sorted by posting time so only the most recent reviews are at the top, which is not always the most helpful.

Describe the solution you'd like
There should be the ability to upvote (and maybe downvote) reviews to all the most helpful ones to rise to the top.

Describe alternatives you've considered
Only allow upvotes to not allow downvote brigading, but I don't think that'll be a big issue.

Additional context
This is implemented on the UT Austin's MSCSHub

[ADMINISTRATIVE] Create a Data Governance Policy

Related to #23 and #1 in order to properly make use of the data to allow for features like #17, we need a solid Data Governance policy to allow users to feel comfortable and safe with their data with us and enable sharing of anonymized data.

[ADMINSTRATIVE] Miscellaneous thoughts and questions on CI/CD, DevOps, and infra

👋 Hey folks! I have a bunch of questions on how we'd like to set up our infrastructure and deployment process. We can try and use this issue as a dumping ground for now, and break down the work into standalone issues as the tasks become clear.

Infrastructure

  1. I've noticed that we have live pages at omshub.org and dev.omshub.org. Where are these being hosted right now? Where do we eventually want them to be hosted?
  2. How and where do we want to persist our data?
  3. How are we managing API keys, SSH keys, and other kinds of secrets for any infrastructure we've provisioned?

Deployment

  1. How is the NextJS frontend being deployed?
  2. What kind of rendering do we want for NextJS? This will inform the components that we'll need to deploy and maintain.
  3. How many environments do we want? Dev and Prod?
  4. What kind of workflow do we want for deploying changes? I'm a fan of continuous integration, so merges to the default branch should automatically trigger a build, test, and deploy. The PRs themselves should undergo a similar series of checks before being able to be merged.

Monitoring

(This may be a little premature, but fun to think about!)

  1. How will we know if the site is working?
  2. What kind of logging and error reporting do we need? If a change breaks the site for users, where will we be alerted?

[FEATURE] Expand scope of site to include on campus students/reviews

Is your feature request related to a problem? Please describe.
There is no specific reason why the site could not be used by on campus undergrad and graduate students and one expects it would be useful to them as well. However it would dramatically increase the scope of the project and we would need contacts on campus to make it happen.

Additional context
Not MVP or even 2022 goal I think, but worth keeping in mind.

[FEATURE] Make dataset downloadable

Is your feature request related to a problem? Please describe.
Often times there is a desire to make the data available to others without needing to scrape the website, this would make it possible.

Describe the solution you'd like
There should be a download button or something to that extent to download the reviews to a csv, tsv, excel, or similar format.

Describe alternatives you've considered
csv probably won't work, but a tab separated, or excel, could be a few options, but should be something anyone can download and use.

Additional context
We would have to consider the Data Governance #28 policy to make sure it aligns with making this happen.

[FEATURE] Course Review Search

Is your feature request related to a problem? Please describe.
There should be a way for our end users to search over the collection of reviews for a specific course.

Describe the solution you'd like
On a per course basis, there will be a "search" menu on each page, where in the user enters a string, and we narrow the results returned to only include those reviews that have a match.
It's also possible to "fully feature" this, and add additional filters, like date ranges, filter by ratings, hours, difficulty, et cetera which will be marginally extra effort for a lot more utility.

This will allow our end users to ask questions like: "what did my fellow OMSCSers think of the final in ESO?", or "Maybe distributed computing isn't that hard, what do the positive reviews say?", or "what do the old timers think of Computational Journalism".

Describe alternatives you've considered
I am proposing that we implement search as a server based feature that queries the database and directly returns the results. It's also possible to make a site's search work via a third party service, like ElasticSearch. However, I don't think we'll need this level of sophistication/complexity given that our search domain is homogenous (course reviews) and the number of reviews per course pretty low.

[DISCUSSION] Ensure compatibility/information with OMSA/OMSCY

Is your feature request related to a problem? Please describe.
Generally OMSCentral was focused on OMSCS, and a new website should be inclusive of OMSA and OMSCY, see the MSCSHub and MSDSHub for examples. OMSA/OMSCY must have buy in to the site for it to be successful and part of conversations

[CORE FEATURE] Determine if possible to use OMSCentral Data

Is your feature request related to a problem? Please describe.
The site lives and dies by its data, and currently we would need to start from scratch, even OMSCentral started from a Google Doc originally so it had data.

Describe the solution you'd like
Need to determine two things, if we can use the data at all, and if Mehmet would allow us to get a database extract to load.

Describe alternatives you've considered
Start from nothing and build it.

Additional context
Lots of potential legal issues here and would have be very clear as what can be done.

[ADMINSTRATIVE] Administrivia

Determine centralized ownership:

  • Services accounts (frontend & backend)
  • Email (general gmail or similar vs. gatech.edu domain)
  • License & Terms of Service, Data Policy, etc.
  • Ownership: Individual vs. LLC vs. 501(c) etc.

[FEATURE] Setup unit testing

Configure the project with unit testing frameworks and tools.

Scope:

  • frontend: jest + react testing library
  • backend: jest will suffice if we go with node for now, we can add something else later if this changes in the future

[ADMINISTRATIVE] Decide on a Git workflow for pushing changes to production

We currently have two integration branches:

The repository is configured with dev as the default branch. This means that when a PR is merged, it will deploy into a "development" version of the site. An additional PR needs to be created to merge the dev branch into main to deploy to the production site. This method is sometimes known as Gitflow and is one of two commonly used Git workflows, with the alternative being [trunk-based development])(https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development).

We should decide if we want to adopt trunk-based development or stick with the Gitflow-style model we currently have. I am biased towards the former, but I'm also more than happy to back Gitflow if that's the decision of the community -- this is our project, so we should all have a say.

Trunk-based development has the following advantages:

  • A single integration branch. When a change is approved and merged, it's on the way to production. This forces us to be disciplined in opening small PRs and giving thorough reviews. Small changes are also easier to test, and in the worst case, revert.
  • No overhead in deciding on a release cadence. Releases happen when a PR is approved.
  • No overhead in synchronising changes between integration branches. A single branch represents the code that's externally visible to users.
  • Vercel deploys a live preview site for each PR we create (you can see an example here). This removes the need for a dedicated integration branch like dev for previewing changes. My philosophy with dev environments in general is that they should be ephemeral; created when needed and destroyed when irrelevant.
  • Ownership. The author of a PR can be responsible for the entire lifecycle of their change; from inception to deployment.

Where trunk-based development falls short is long-lived dev or test environments, particularly for user testing (these are great points made in the Slack thread below). My counter to this is that we should make small PRs (changing one component at a time), or spin off an ad-hoc integration branch when it’s warranted (if we’re doing a big redesign consisting of a large collection of PRs). Ad-hoc integration branches work nicely for user testing too; we can cherry pick the relevant commits into a branch that’s named after the purpose of the test.

I really want to optimise our Git workflow for the common case, which is regularly deploying small changes into production.

Links

[FEATURE] Add Google Lighthouse action

Is your feature request related to a problem? Please describe.
Add Google Lighthouse to current workflow

Describe the solution you'd like
Add and configure Github action

Describe alternatives you've considered
None so far but might consider adding any other tools that will assist with increasing page rank.

Additional context
N/A

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.