Giter Site home page Giter Site logo

mm-be's Introduction

Description

Mentor match is an app that aims to take user's professional development to a next level where he/she can get instant access and support from a network of qualified professionals in his/her own interests, anywhere, anytime.

User Stories

Guests/visitors

  • As a guest, I can browse the list of mentors and search for suitable ones based on certain filters and sortings.
  • As a guest, I can check out mentors’ profiles and reviews

Registered customer

  • As a customer, I can send/cancel a session request to my desired mentors
  • As a customer, I can leave a review after the session is finished
  • As a customer, I can receive a google meet link for my upcoming session requests
  • As a customer, I can view and manage all of my session requests in my dashboard
  • As a customer, I can update my profile settings

Registered mentor

  • As a mentor, I can create and update my profile settings
  • As a mentor, I can accept/decline/cancel a session request from customer
  • As a mentor, I can receive a google meet link for my upcoming session requests
  • As a mentor, I can view and manage all of my session requests in my dashboard
  • As a mentor, I cannot book a session with myself

Features and Specifications

User Authentication

  • Mentors and customers can create accounts using their emails
  • Registered users can log in and stay signed in for a while
  • Registered users can log out

Browsing mentors

  • All users can search for mentors based on name, city, location, company and sort results by review rating, number of sessions and joining date
  • All users can view mentors’ profiles and their reviews

Profile management

  • Users can update their account settings, including basic information and their profile avatar
  • Mentors can create and update their profiles more comprehensively, including other fields such as education, certifications, experiences which will then be displayed on the website.

Session management

  • Customer can send/cancel a session request to any mentor
  • Mentor can accept/decline/cancel a request from customer
  • Both users will have dedicated session dashboards to view status and manage all session requests
  • Google meet link will be provided to users once the mentor accepts the session request.
  • Customer is prompted to leave a review on a session after it’s finished.

Advanced features

  • Auth: forget password
  • Auth: sign up/sign in by google credentials
  • Session link: google meet to be saved directly to user's google calendar and/or be confirmed with an email sent to user's email address
  • Responsive UI

Deploy link: https://mentor-match-site.netlify.app/

Schema & ERD

  • User
  • UserProfile
  • Certification
  • Education
  • Experience
  • Session
  • Review

ERD: https://drive.google.com/file/d/1A-53mhZX2PiFHzTxw1GbMiehrddgO2Bt/view?usp=sharing

API Endpoints

Auth APIs

/**
 * @route POST /auth/login
 * @description Log in with email and password
 * @access Public
 */
/**
 * @route POST /auth/googlelogin
 * @description Login with OAuth2
 * @access Public
 */
/**
 * @route PUT /auth/forgotpassword
 * @description forget password 
 * @access Public
 */
/**
 * @route PUT /auth/resetpassword
 * @description reset password  
 * @access resetToken access
 */

User APIs

/**
 * @route POST /users/signup
 * @description Register new user
 * @access Public
 */

userProfile APIs

/**
 * @route GET /userProfiles?page=1&limit=10
 * @description Get userProfiles with pagination
 * @access Public
 */
/**
 * @route GET /userProfiles/featured?page=1&limit=9
 * @description Get featured mentors on homepage
 * @access Public
 */
/**
 * @route GET /userProfiles/me
 * @description Get current user info
 * @access Login required
 */
/**
 * @route GET /userProfiles/:userProfileId
 * @description Get a user profile
 * @access Public
 */
/**
 * @route PUT /userProfiles/me
 * @description Update user profile
 * @access Login required
 */
/**
 * @route GET /userProfiles/:userProfileId/reviews
 * @description Get all reviews of a mentor
 * @access Public
 */

Certification APIs

/**
 * @route POST /certifications
 * @description Create a new certification
 * @access Login required
 */
/**
 * @route GET /certifications?page=1&limit=10
 * @description Get all certi of the current user with pagination
 * @access Login required
 */
/**
 * @route PUT /certifications/:certiId
 * @description Update a certi
 * @access Login required
 */
/**
 * @route DELETE /certifications/:certiId
 * @description Delete a certi
 * @access Login required
 */

Education APIs

/**
 * @route POST /educations
 * @description Create a new education form
 * @access Login required
 */
/**
 * @route GET /educations?page=1&limit=10
 * @description Get all education of the current user with pagination
 * @access Login required
 */
/**
 * @route PUT /educations/:educationId
 * @description Update an education
 * @access Login required
 */
/**
 * @route DELETE /educations/:educationId
 * @description Delete an education
 * @access Login required
 */

Experience APIs

/**
 * @route POST /experiences
 * @description Create a new experience
 * @access Login required
 */
/**
 * @route GET /experiences?page=1&limit=10
 * @description Get all experience of the current user with pagination
 * @access Login required
 */
/**
 * @route PUT /experiences/:expId
 * @description Update an experience
 * @access Login required
 */
/**
 * @route DELETE /experiences/:expId
 * @description Delete an experience
 * @access Login required
 */

Session APIs

/**
 * @route POST /sessions/:sessionId/reviews
 * @description Create a new review on a session
 * @access Login required
 */
/**
 * @route POST /sessions/requests/:userProfileId
 * @description Send a session request
 * @access Login required
 */
/**
 * @route GET /sessions
 * @description Get the list of sessions based on the status 
 * @access Login required
 */
/**
 * @route GET /sessions/google/redirect
 * @description Google OAuth2 
 * @access Google auth
 */
/**
 * @route PUT /sessions/:sessionId
 * @description Update status of a session (accept/decline/cancel/complete/pending/reviewed)
 * @access Login required
 */

Review APIs

/**
 * @route GET /reviews/:reviewId
 * @description Get details of a review
 * @access Login required
 */

mm-be's People

Contributors

anhduc97hn avatar

Stargazers

 avatar

Watchers

 avatar

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.