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  , & etc. in the chat page
- [Resolved] Admins should now see the chat log status being updated immediately on assignment