Giter Club home page Giter Club logo

findastudybuddy's Introduction

Find A Study Buddy

Project description

We designed and developed a Web Application for students which allows users to create and customize their account. The courses linked to a student’s profile are split into two categories: courses for which he/she can offer help and courses for which he/she needs help from others. An user can choose the users they want to connect with, by swiping right when their profile appears on the Dashboard page. If two students match, they now have a connection and can talk via chat and they can end their connection if they choose to.

Find all the steps we've followed for the software development process in this wiki.

Technologies

.NET Core 6.0, React

Project video presentation

Find the project video presentation here.

Members

User Stories

  1. As a user, I want to be able to create an account.

    • Acceptance criteria:
      • should implement a functional "create account" button which leads the user on a new page
      • should have text box for name/surname, email, password, university (optional at this stage), user's current year of study (optional at this stage), address (optional throughout the experience), phone number (optional throughout the experience), a short description (maximum 500 characters, mandatory at this stage), the courses the user needs help (optional at this stage)
      • should check if the user's email is valid (has @generic.com, does not contain characters like: ",;:/<$>%&*#~".
      • should check if the password is valid: at least 10 characters, at least one uppercase letter, at least one character
      • should have the possibility to remember your account by clicking "remember my password" button from the landing page
  2. As a newly registered user, I want to complete my profile.

    • Acceptance criteria:
      • should let the newly registered users upload different details about themselves: university (mandatory at this stage), user's current year of study (mandatory at this stage), a short description (maximum 500 characters, mandatory at this stage), address (still optional), phone number (still optional), the courses they need help (optional at this stage)
  3. As an user with an existing account, I want to sign into the app so that I can connect with the other users.

    • Acceptance criteria:
      • should have on the landing page a functional button for "login" next to the "create account"/"sign up" button
      • login is done with email and password
      • logging in should be allowed only to already existing users (users that have already created their account)
      • at this stage there is also a "forgot your password?" button which after clicking it leads you to a new page where you can write the email of your existing account, where you will receive an email for the password reset
      • once you are are signed into the application, you can start chatting with the people you feel connected to
  4. As a logged user, I want to chat with people with similar interests.

    • Acceptance criteria:
      • should have the "matching algorithm" implemented so an user can find people with similar interests
      • an user can choose if they want to chat or not with the current suggested person in the tab "find new buddies"
      • should exist a "messages" button where you can find an user's conversations with all their connections
      • after going to an user's conversation there should be a list with your existing connections and chats, the chat you clicked most recently
      • by swiping right/left an user will have the right-swiped students in the chat page which can be accessed by clicking on the bottom left icon in the dashboard page
  5. As an user, I want to update my profile anytime.

    • Acceptance criteria:
      • should have the possibility to change the password by providing the email address and the old password
      • should provide the option to update all fields (besides name/surname and email), but all the mandatory fields must remain completed, while still having the possibility to update them
      • should have the permission to add new courses where the user needs help
      • should have the possibility to update/delete my help section
  6. As an user, I want to be able to delete my connections with people I don't want to talk to anymore.

    • Acceptance criteria:
      • should have a "unmatch/disconnect" button; after an user presses it, that connection is deleted
      • users can close/exit the chat with another user anytime, without losing any messages (real-time chat)
      • after an user deletes their connection with another user, their profile should be removed from that user's list of connections
      • when an user unmatches someone, that person should not appear anymore as a suggestion for connections.
      • an error 404 will be displayed when a person you unmatched tries to access your profile
  7. As a logged user, I want to be able to sign out/log out anytime.

    • Acceptance criteria:
      • on the main page/the profile page of every user, there should be a "sign out/log out" button
      • when pressed, it redirects them to the landing page
  8. As an existing user, I want to be capable of deleting my account anytime.

    • Acceptance criteria:
      • the user will be able to delete their account by pressing a button
      • the button will be located in the profile updating area
      • all their data will be lost
      • the deleted profile won't be available for the other users
      • an error 404 will be displayed when another user tries to see the deleted profile
  9. As an user with matches, I want to be able to access my dashboard whenever I would like to.

    • Acceptance criteria
      • an user would be able to access their dashboard whenever they are logged and go on the dashboard page
      • no other constraints should be present
  10. As an existing user, I want to be able to manage my own connections.

    • Acceptance criteria
      • when an user is on the dashboard page, they can easily choose their connection by only swiping right (if they would like to chat with that person) or by swiping left (if they are not sure about making a connection with that person)
  11. As a user, I would like to receive and offer help anytime.

    • Acceptance criteria
      • should implement a section on the profile with “give help/receive help”, thus letting other users know that the person is in need or wants to help
      • depending on the user’s choice, this will improve the matching between me and people with similar interests (ex. if an user has the option "offer help" on their profile, they will mostly be matched with people that want to receive help)
      • the user should be able to update that section (choose between receiving or giving help or both)
  12. As a newly registered user, I would like to receive a confirmation email.

    • Acceptance criteria
      • should create an email address which sends automatically a generic confirmation email for logging in ([email protected])
      • should use a Sendgrid API
  13. As a newly registered user, I would like to receive a registration email.

    • Acceptance criteria
      • should create an email address which sends automatically a generic confirmation email for registration ([email protected])
      • should use a Sendgrid API

UML Use Case Diagram

UML Diagram

findastudybuddy's People

Contributors

andrewssb avatar dianacordun avatar florea-alex avatar vladfxstoader avatar

Stargazers

 avatar

Watchers

 avatar

findastudybuddy's Issues

Courses are missing

The course database is empty. There are no courses shown from which the user can choose to add to his profile for offering/receiving help.

Matching algorithm problem

Matching algorithm takes all users and does not respect the required rules (should match users based on the courses one needs/offers help with the other users who offer/need help on the same courses, but should not match user X with himself/herself).

Matching algorithm connection issue

If user X swipes user Y as their friend, but user Y does not have user X as a connection yet (maybe they didn't find user X in their list yet or they swiped left on user X). Then user X shouldn't have user Y in their friends list/connection list.

Multiple profiles

Multiple profiles can be created and added to the database for the same user. The relationship between user and profile should be one-to-one.

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.