Skip to content

Releases: SHni99/Minerva

v4.0.0

26 Jul 01:41
6539ba6
Compare
Choose a tag to compare

Minerva v4.0.0

Product of sprint 5
Fully functional prototype with meticulous test suites such as unit, integration and UI testing!
Bugs and errors are identified and rectified, thus program should flow smoother.
More details found below.

New Features in this Release

  • Sort/Filter of listings
  • User Preference options
  • UI testing using Cypress
  • Edit listings

Major Features

Edit listings

  • Users should now be able to see an edit button when clicking on their own listings
  • Users should be redirected to the '/edit-listing' page after clicking on the edit button
  • Users should see input fields pre-filled with their previous entries
  • Users should be able to update their listings with the modified entries
  • Users should not be able to access the '/edit-listing' page directly (i.e. user entered link manually rather than clicking on edit button)

Filtering of User Data

  • Users are able to turn on/off buttons to show email, gender and bio.
  • Enable users to have control over their privacy!

Sort/filter of listings

  • Users should experience faster loading times for listings
  • Users should be able to see the listing creator's average rating in the listing modal
  • Users should be able to sort listings by (1) recency, (2) average listing creator id and (3) number of reviews
  • Users should be able to filter listings by Tutoring Level, Subject and Qualifications
  • Users should be able to select more than one criteria for each filter
  • Users should be able to select multiple filters simultaneously
  • Users should be able to add their custom filters by typing in the fields (other than tutoring level)
  • Users should be able to delete their custom filters
  • Users should be able to use the search bar with the enter key
  • Users should be able to make use of fuzzy search/fuzzy filtering (inexact search, i.e. math should also show a math/e math)

Program Optimization

Saving of tutor/tutee toggle

  • Users should be able to toggle the tutor/tutee filter on view listings page
  • Tutor/tutee toggle should remain the same even after the page reloads

Customized RPC function

  • Added custom RPC function in Supabase to allow for fetching of all required data with one API call rather than multiple (3-4) per refresh

UI Testing using Cypress

  • Set up Cypress workflow for testing on every push to any branch
  • End-to-end testing (E2E) on view/filter/create listing pages

Extensions for listings

  • Users should be able to see more filters by clicking on the "More Filters" button
  • Users should be able to filter by listing hourly rates
  • Users should be able to enable/disable the filter by clicking on the checkbox
  • Users should be able to use the slider to input their desired price range
  • Users should be able to toggle between the compact/extended mode to keep the range within $100/$1000 respectively
  • Users should be able to see a green badge showing the desired rates, if applicable
  • Users should be able to disable the filter by clicking on the X button on the green badge
  • Users should be able to filter by average rating
  • Users should be able to enable/disable the filter by clicking on the checkbox
  • Users should be able to use the slider to input their desired price range
  • Users should be able to see a green badge showing the desired rates, if applicable
  • Users should be able to disable the filter by clicking on the X button on the green badge

Profile Page

  • Fixed error causing blocked users list to not show when one of the blocked users does not have a profile picture
  • Removed Supabase calls per useEffect run

Chat Page

  • Conversations now disappear immediately once a user is blocked
  • Chats are now closed immediately once a user is blocked

Bug Rectification

  • [Resolved] Report/blocked features are hidden when user is not logged in
  • [Resolved] Guests should not be able to see the Chat button on the listing modal
  • [Resolved] Guests should not be able to access this page (redirect to login page)
  • [Resolved] Users should no longer see html entities such as &nbsp, &amp etc. in the chat page
  • [Resolved] Admins should now see the chat log status being updated immediately on assignment

v3.0.0

11 Jul 12:11
568f7b8
Compare
Choose a tag to compare

Minerva v3.0.0

Product of sprint 4
Fully functional prototype with add-on features for users to report and block unpleasant accounts!
More details found below.

New Features in this Release

  1. Report and block buttons in dropdown
  2. Report modal with call to actions listing
  3. Report panel display for administrator
  4. Ban page
  5. Lists of blocked users in block modal
  6. Blocked and unblocked effect in listings and chat page
  7. Setting dropdown (Organized)
  8. Crop Profile Picture

Major Features

Report Features

  • Stores the thresholds to determine if a user is an admin by comparing it with the user's permission level (ADMIN_THRESHOLD)
  • Added unresolved/resolved buttons to filter reports
  • Implemented resolve report button
  • Added assignment button for admin (assign/remove reports to/from)
  • Disabled all action buttons unless user is assigned to the report
  • Displayed chat Log page between the reported user and the reporter (if it exists)
  • Replaced "About Us" link in NavBar with Admin Panel for authorised users

Block Features

  • Easy to keep track by having a modal listing the blocked users, accessible through the user's own profile page
  • Blocked users will not have their listings and chat page shown on current account
  • Blocked/unblocked user profile page will reload immediately after blocked/unblocked confirmation is clicked

Ban Feature

  • Stores the thresholds to determine if a user is banned by comparing it with the user's permission level (BANNED_THRESHOLD)
  • Admins can ban/unban users from the View Reports page
  • Banned users cannot access any service when logged in
  • Banned users will be shown a ban page that displays the ban reason
  • Banned users can submit appeals on the ban page

Crop Profile Picture

  • Users can now crop their uploaded images when changing their profile picture!
  • This will prevent the weird scaling of rectangular images when uploaded as avatars

Program Optimization

Redesigned User Data Retrieval

  • Implemented new method to store profile information in a global state
  • Revamped by making the program more efficient with the use of "AuthContext" to reduce the number of times the system reloads
  • Redesigned some pages to make use of AuthContext to prevent unnecessary queries to Supabase

Unit/ Integration Tests

  • Reinstated tests involving logged-in user states in Navbar
  • Added tests for correct profile picture display features in Navbar
  • Completed unit and integration tests for Landing page

v2.0.0

28 Jun 16:50
Compare
Choose a tag to compare

Minerva v2.0.0

Product of sprint 3!
Fully functional prototype with the ability for users to chat, make deals, leave reviews for others and more!
More details found below.

Note: This release is considered to be a major change due to the changes in the Supabase structure that is now incompatible with the previous release.

New Features In This Release

  1. New Listing Card Design
  2. Redesigned Create Listing Page
  3. Expanded Listing Details (click on listing cards)
  4. Listing Deletion
  5. Chat With Other Users
    1. Send Images Through Chat
    2. Delete Sent Images
    3. Make/Accept Offers
    4. Leave Reviews (after a deal has been completed)
  6. View Profile Pages of Other Users
    1. View All Listings Posted by The Same User
    2. View Rating (out of 5 stars)

Steps Taken

Redesigned Listings

  • Shifted focus from listing titles and description to listing tags
  • Removed listing titles and descriptions from listing cards and listing creation process
  • Added expected rates/hr + targeted education level in listing cards and listing creation process
  • Added colour codes to tags
  • Abstracted out tags for use in multiple components
  • Displayed colour code on View Listings Page and preview of tags under Create Listing Page
  • Introduced a 'popup'/modal showing more information about a listing on click
  • Added the ability to delete listings
    • Editing of listings to be implemented soon, in the process of deciding the user interface for editing listings
  • Converted listings table to give out realtime updates to reflect latest changes

Created Public Profile Pages

  • Essential feature to build reviews and chats on!
  • Designed and implemented a simple profile page showing rating, listings and reviews
  • Added average rating view upon clicking the user's ratings
  • Added Edit Profile/Logout buttons if a user is visiting his own profile page

Implemented Basic Chat Functionality

  • Designed and implemented chat skeleton using React library ChatScope
  • Added responsive styling to stack the sidebar and conversation body conditionally
  • Created 2 new tables in Supabase to facilitate the entire chat function
  • Utilised Supabase Realtime API calls to enable real-time chatting (messages update without manually refreshing the page)
  • Added ability to send images (stored in Supabase Storage)
  • Added ability to make and accept offers
  • Added ability to leave reviews after an offer has been accepted
  • Added a dynamic modal on the chat page to show differing content for multiple actions (e.g. Confirm make/accept offer, leave review, confirm image send, view sent image)
  • Added ability to start "phantom" chats with users -- empty conversations that exist only on one user's client until a message is sent. Purpose is to avoid unnecessary insertion of empty chats into the database, which would also affect users who might end up with tons of empty chats started by other users.

v1.0.0

12 Jun 13:33
fceb8e0
Compare
Choose a tag to compare

Minerva v1.0.0

First prototype -- product of sprints 1 and 2.

General Overview of Implemented Features:

  • Landing Page
  • Login Page
  • Register Page
  • Profile Page
  • View Listing Page
  • Create Listing Page

Major Steps:

Sprint 1

Conversion of generated Dhiwise code to use CSS modules

  • Removed boilerplate code generated by Dhiwise
  • Used CSS modules to separate and define CSS styles for each individual page/component
  • Cleaned up main .js code to improve readability
  • Created reusable components (NavBar and FooterBar) to enforce code reusability and to reduce bugs

Basic link to Supabase

  • Creating methods to make use of Supabase auth for authentication (login, register)
  • Setting up Supabase Storage to store relevant images (Avatar Image, Listing Images)
  • Setting up additional tables for proper functioning of the app (Listing, Profiles)
  • Writing of methods to enable data retrieval from the relevant tables for Listings

Sprint 2

Inclusion of Bootstrap classes

  • Converted previous .js code to include Bootstrap classes to create mobile-friendly web design
  • Cleaned up CSS module files due to Bootstrap's convenient class-styling, improving code readability
  • Improved organisation of code elements through Bootstrap's grid system, making it easier for developers to read and improve on the codel

Improved Supabase communication

  • Implemented Reset Password function which requires verification of the user's email ownership
  • Modified Row-Level Security policies under Supabase to give users permission to upload images to the storage.
  • Implemented methods to upload and retrieve profile pictures for the Profile Page and top right corner of NavBar.
  • Added more fields in the Listings table for extension to the Create Listing Page
  • Restructured Supabase queries to squash bugs during fetching operations

CI/CD Workflow + Code Reviews

  • Implemented CI and CD using GitHub Actions
    • CI: Automated buildAndTest script upon pushing any new commits
    • CD: Automated deployment to Heroku app upon pushing to the main branch
  • Established a one-day cycle for more frequent merging back to main, greatly reducing chances for merge conflicts
  • Established mandatory code reviews for each pull request before new code is allowed to be merged back into the main branch.

Automated Tests (CI)

  • Made use of built-in React Testing Library to create unit tests for the various components and pages:
    • Login Page
    • Listings Page
    • NavBar
  • Covered individual, specific methods to ensure input validation correctness and proper state functionality.
  • Used to ensure all pushed commits are good to go before manual review by peer
  • Cleaned up test suites by refactoring and following DRY principles to ensure better code readability