Skip to content

boatnoah/ratemymajor

Repository files navigation

RateMyMajor

Submitted by: Noah Kim

This web app: RateMyMajor is your ultimate resource for exploring academic programs, reading student reviews, and finding the perfect fit for your future.

Time spent: 20 hours spent in total

Required Features

The following required functionality is completed:

  • A create form that allows the user to create posts
  • Posts have a title and optionally additional textual content and/or an image added as an external image URL
  • A home feed displaying previously created posts
  • By default, the time created, title, and number of upvotes for each post is shown on the feed
  • Clicking on a post shall direct the user to a new page for the selected post
  • Users can sort posts by either their created time or upvotes count
  • Users can search for posts by title
  • A separate post page for each created post, where any additional information is shown is linked whenever a user clicks a post
  • Users can leave comments underneath a post on the post's separate page
  • Each post should have an upvote button on the post's page. Each click increases its upvotes count by one and users can upvote any number of times
  • A previously created post can be edited or deleted from its post page

The following optional features are implemented:

  • Users can only edit and deleted posts or delete comments by entering the secret key, which is set by the user during post creation
  • Upon launching the web app, the user is assigned a random user ID. It will be associated with all posts and comments that they make and displayed on them.
  • Users can customize the interface of the web app
  • Display a loading animation whenever data is being fetched

The following additional features are implemented:

  • User authentication via supabase Oauth and google sign in
  • Users can log in and log out limiting or granting them access to the website
  • Likes and dislikes for each commenter.
  • Each user's post is associated with their gmail
  • Fuzzy searching for all universities in the United States
  • Light and dark theme

Video Walkthrough

Searching

Searching for Content

searching

Search for content by keywords or categories.

User Authentication

User Login

user-login

Log in to the application with your credentials.

Logging Out

loggedoutPOV

Log out of the application securely.

Post Management

Creating a Post

createpost

Create and publish new reviews for your major.

Editing a Post

editpost

Update and modify existing reviews of yours.

Deleting a Post

deletepost

Remove unwanted reviews of yours.

Viewing Content

Viewing Content

viewing

View and read published reviews.

GIF created with LICEcap...

Check out the website live: ratemymajor.com

Notes

Challenges encountered while building the app:

One major challenge I encountered while building this app was implementing an efficient search functionality

for the universities. With thousands of universities in the database, ensuring good performance

for the search bar was crucial. With thousands of universities in the database, ensuring good performance for the search bar was crucial.

To tackle this, I utilized the Fuse.js library, which is designed for fuzzy searching and fast performance.

This was necessary to prevent the application from becoming sluggish or unresponsive when dealing with a large volume of data.

Another area that took some time and effort was setting up user authentication. Reading through the documentation and understanding the intricacies of secure authentication workflows.

On the front-end side, I utilized the Shadcn to help with the styling and overall look and feel of the website.

While this library accelerated the component development process, there was still a learning curve in understanding its design system, customization options, and making it work seamlessly with my application's specific requirements. Finding the right balance between leveraging the library's capabilities while maintaining my desired visual aesthetic was a challenge I had to navigate.

License

Copyright 2024 Noah Kim
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

About

πŸŽ“ Find and rate your major

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors