Giter Site home page Giter Site logo

seeksi's Introduction

seeksi's People

Contributors

dtnguyen22 avatar hlavu avatar minhhang107 avatar mqnguyen5 avatar oliver-pham avatar tuanthanh2067 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

mqnguyen5

seeksi's Issues

Please Stop Coding

This issue is to remind everyone that, sometimes, you should take a break.

image

Because most of our team members have other commitments outside this project, being overloaded with work is inevitable. If you have too much work on your hands, please comment on this issue or bring it up on our Discord server. If you have personal problems that can affect your performance and progress, please also let the team know. As long as we know what the problem is, we can figure out the solution together. (Feel free to rant on #off-topic)

Let's drop this project Let's work together to get this project done.

Screen Shot 2022-01-16 at 11 18 50 PM

Build Partners Section

Is your feature request related to a problem? Please describe.
Inside the "Message" page, we have a section display the list of the user matched partners. This section would contains several elements, from the search input to look up one or many partners, to a card which display the partners' name, profile image, and a preview of the recent message the user had with them.

Are there any related issues? Please list all of them.

  • FE: Build a "card" component to display the matched partners in the list
  • #178
  • BE: Query match

Describe the solution you'd like
Screen Shot 2022-01-19 at 7 57 34 PM

Acceptance criteria

  • Partners are rendered successfully in the "card", alongside with their profile image, name, and a message preview
  • Search input is rendered successfully and the user can type text in it
  • Unmatched users should also appear on query

Describe alternatives you've considered
N/A

Additional context

Build User Profile page

Is your feature request related to a problem? Please describe.
We need a profile page to display user profile.
Note that when user is viewing their own profile, there MUST be Edit Profile button, otherwise the button is hidden (this might need further discussion)

Are there any related issues? Please list all of them.

Describe the solution you'd like
Group 143
Use a React library (e.g. React lightgallery) to display images

Acceptance criteria

  • User can view their own profile (personal info + photos)
  • User can navigate to profile page by clicking Profile button on nav bar
  • User is redirected to profile page after signing in
  • User is redirected to Edit Profile Page when clicking Edit Profile button (can be tested later when Edit Profile Page is finished)

Describe alternatives you've considered
N/A

Additional context
Final SRS: https://seneca.sharepoint.com/:w:/s/PRJ566NAAFall2021-Team04/EUqySSjxSqJLiVd2OyWDEAABJI8vfO567WsHBpPZmSQWCg?e=FJcwSh
Figma Design: https://www.figma.com/file/D6OdyoGg8cbL1hAScPEsYI/PRJ-Diagrams

Build Navbar component

Is your feature request related to a problem? Please describe.
We need a Navbar so users can navigate to different pages on the website

Are there any related issues? Please list all of them.
N/A

Describe the solution you'd like
Nav Bar (Light)
Use React Router to link to other pages (e.g. Match (main page), Profile, Chat).

Acceptance criteria

  • All links on Navbar must navigate users to the correct (blank) page (e.g. correct URL, page doesn't need to have any content)
  • Active tab must be highlighted/underlined
  • Logo must be on the leftmost position on the Navbar

Describe alternatives you've considered
N/A

Additional context

Set up Server-side boilerplate

Set up the folder structure + source code + configuration + (anything else) for thebackend directory.

Let's find templates and code generator tools to streamline this task.

Resources

Build Landing Page

Is your feature request related to a problem? Please describe.
Our application needs a landing page to attract and guide our potential users.

Describe the solution you'd like

Landing page

Acceptance Criteria

  • User can find information about Seeksi on the landing page
  • User can create an account from the landing page
  • User can log into their account from the landing page

Describe alternatives you've considered
We don't have any existing page, so the only option is to code this from scratch.

Additional context

Account Registration

Is your feature request related to a problem? Please describe.

One of the core features of our dating app is allowing users to sign up for an account. This guarantees a user's data is persisted for personalized experience & data analytics.

Are there any related issues? Please list all of them.

Describe the solution you'd like

  • #36
  • Implement a GraphQL mutation for account creation

Acceptance criteria

  • Frontend can send a request to create an account (e.g. with a GraphQL mutation)
  • Frontend should receive user data & session token if registration succeeds
  • User info is persisted successfully
  • Passwords should be hashed and stored securely in the database
  • Registration process should fail if the user is under 18 years old
  • Account data should be validated

Describe alternatives you've considered

N/A

Additional context

Password-based User Authentication

Is your feature request related to a problem? Please describe.

We should ensure that only account owners can access their own accounts.

Are there any related issues? Please list all of them.

Describe the solution you'd like

There are various methods of authentication (e.g. biometric, multi-factor, token-based), but we should go with password-based authentication for now.

  • #36
  • Implement a GraphQL query for account authentication

Acceptance criteria

  • Frontend can send a request to sign into an account (e.g. with GraphQL mutation)
  • Frontend should receive user data & session token if authentication succeeds
  • Frontend should receive comprehensive error message if authentication fails (e.g. "Wrong password or email")

Describe alternatives you've considered

N/A

Additional context

Determine Conventions

There are conventions to enhance communication, collaboration, and productivity. Before we start developing our project, I think we should decide on a few conventions below:

  • Commit message
  • Branch name
  • #12
  • #8

I think these naming conventions are a great start. Maybe we can use them.

Feel free to create a new issue and suggest a convention for each item. This issue is used for tracking all the conventions to be implemented.

Resources:

Build Match Page

Is your feature request related to a problem? Please describe.
We need a match page for user to send/reject a match request to/from another user.

Are there any related issues? Please list all of them.

Describe the solution you'd like
image
image

Acceptance criteria

  • User can view other users’ profile cards (1 at a time)
  • User can send a match request to another user
  • User can reject another user
  • User can view next profile card after either matching or rejecting
  • Card should be animated on click matching or rejecting
  • User should receive a message (e.g. through animation, picture, or text) after they match or reject another user

Describe alternatives you've considered
N/A

Additional context
Final SRS: https://seneca.sharepoint.com/:w:/s/PRJ566NAAFall2021-Team04/EUqySSjxSqJLiVd2OyWDEAABJI8vfO567WsHBpPZmSQWCg?e=FJcwSh
Figma Design: https://www.figma.com/file/D6OdyoGg8cbL1hAScPEsYI/PRJ-Diagrams

Update CONTRIBUTING.md

Is your feature request related to a problem? Please describe.

I want to add more details about how a new dev can get started contributing to the project.

Pull request template

We should craft a template for every pull request beforehand. This should save us more time on deciding what to write in a PR description.

Some suggestions:

About PR desc we should provide what have been done, which packages have been used and a screenshot (if necessary) - hlavu

The title should describe the area tackled by the PR and what it wants to add to our app. For instance, [WIP] match: Prototype matching algorithm informs that the PR solves an issue in the matching algorithm but it's a work-in-progress. - oliver-pham

The title might need the type as well (eg: feature, bugfix, refactor, ...)
As for the description, we should also include related issues - minhhang107

Resources

Build Game results

Is your feature request related to a problem? Please describe.
After completing the game, users should be able to see the game results by hitting Game button on chat window. In the game results, we need to display:

  • Total number of common answers between users
  • All 10 questions
  • Each user's answer to every question

Are there any related issues? Please list all of them.
backend

Describe the solution you'd like
Group 152

Acceptance criteria

  • User can view game results at any time
  • User can view number of common answers
  • User can view both partners' answer to each question
  • User can exit the game results to continue chatting
  • Common answers are highlighted

Describe alternatives you've considered
N/A

Additional context
Mock up design: https://www.figma.com/file/D6OdyoGg8cbL1hAScPEsYI/PRJ-Diagrams?node-id=151%3A1117

Build User Profile's Card

Is your feature request related to a problem? Please describe.
We need profile cards to display matches' profile for user to find the best match.

Are there any related issues? Please list all of them.

Describe the solution you'd like
image
image

Acceptance criteria

  • User can view other users’ profile cards
  • User can report another user
  • Card should have animation on click
  • Card style should match the design

Describe alternatives you've considered
N/A

Additional context
Final SRS: https://seneca.sharepoint.com/:w:/s/PRJ566NAAFall2021-Team04/EUqySSjxSqJLiVd2OyWDEAABJI8vfO567WsHBpPZmSQWCg?e=FJcwSh
Figma Design: https://www.figma.com/file/D6OdyoGg8cbL1hAScPEsYI/PRJ-Diagrams

Suggest partners

Is your feature request related to a problem? Please describe.

As a dating app user, I want to get suggestions for any potential parters on this app. These partners should match my basic requirements (e.g. gender orientation, distance, age group). It'd be wonderful if they are compatible with me (e.g. shared interests, values, and relationship goals). Most importantly, I'd prefer getting matches than no matches at all.

Are there any related issues? Please list all of them.

Describe the solution you'd like

Some algorithms to be considered are: Gale-Shapley algorithm & Elo-rating algorithm.

In order to meet a user's basic requirements, potential partners must:

  1. Be sexually attracted and appealing to the user (i.e. compatible gender preference/sexual orientation)
  2. Be within the user's preferred age group
  3. Locate within the user's preferred distance

To maximize compatibility, potential partners should like the user and have as many similarities with the user as possible.

  • #109
  • #110
  • #111
  • #112
  • Design GraphQL schema for Potential Partner
  • Implement GraphQL query for Suggest Potential Partners

Acceptance criteria

  • User can retrieve a list of potential partners1
  • Partners must meet a user's basic requirements
  • Potential partners should be sorted by whether they like the user and the number of shared hobbies

Describe alternatives you've considered

Suggest random people to the user for a diverse experience πŸ˜›

Additional context

Footnotes

  1. partners that fit a user's preference ↩

Database setup

Is your feature request related to a problem? Please describe.

The core features to be developed in Milestone 1 require a database for data persistence. We need to set up one for testing our app. For instance, user authentication and account updates (e.g. password reset, avatar update) can't operate without a database storing user data.

Are there any related issues? Please list all of them.

Describe the solution you'd like

Let's follow "best practices" by creating a separate database for testing and another for production.

Acceptance criteria

  • Database populated with mock data is set up for local development & testing
  • Database usage guide should be documented
  • Cloud database is up and running

Describe alternatives you've considered

For the time being, just avoid features involving database operations.

Additional context

Game request UI

Is your feature request related to a problem? Please describe.
We need a way to let users send game request. The logic is as follows:

  • User clicks on Game button to access the game
  • If users haven't played the game, there will be a pop with game rules
  • On the popup, user can choose to send the game request to partner or cancel, system will display a confirmation message (whether the request was sent successfully or not)
  • If users have played the game already, the system displays game results (see #61 )

Are there any related issues? Please list all of them.
#49
#61
backend

Describe the solution you'd like
Group 334
Group 337
Group 338

Acceptance criteria

  • User can see game rule when hitting Game button on Chat page
  • User can send game request to the current partner they're chatting with
  • User can choose to cancel
  • User can see success message on successful request
  • User can see error message on unsuccessful request

Describe alternatives you've considered
N/A

Additional context
Mock up design: https://www.figma.com/file/D6OdyoGg8cbL1hAScPEsYI/PRJ-Diagrams?node-id=404%3A825

Issue template not found

The recent PR (#16) broke the GitHub issue templates option. (Oops, my bad guys)

How to reproduce it

  1. Click on New issue button
  2. GitHub creates a blank empty issue

Expected behaviour

GitHub should show the configured issue templates

GraphQL scaffolding setup

We can use Apollo Client for our frontend and Apollo Server for our backend. Since we have already defined our data models, I'd prefer schema-first approach to building our GraphQL API.

For our GraphQL server, connecting to our MongoDB database can be supported by Mongoose.

Resources

MongoDB Cloud setup for deployment

  • Create a shared account for every team member
  • Create a Cloud cluster
  • Test MongoDB database URL by creating a new database and a collection
  • Share credentials on Discord
  • (add more tasks if necessary)

Are there any related issues? Please list all of them.

  • To be updated

Acceptance criteria

  • Team members are able to access MongoDB atlas account.
  • The test script connects to the database URL string successfully.

Additional context

  • Test script yoinked from web322.ca

Testing PoC
Connectiontest

not necessary but I put it here as well LOL

Edit User Profile

Is your feature request related to a problem? Please describe.

As a user, I want to be able to edit my personal information, displayed on my profile page, and my preferences. Additionally, I can update my avatar, remove/upload my photos.

Are there any related issues? Please list all of them.

Describe the solution you'd like

  • Design GraphQL mutation(s) for user profile update
  • Implement image upload & storage

Acceptance criteria

  • Frontend can request to update a user profile information preferences
  • Frontend can upload a new avatar image and a profile image
  • New user information is persisted to the database (replacing old user data)
  • Images must be persisted either to the database or to a third-party storage

Describe alternatives you've considered

Don't let users edit their profiles 😬

Additional context

Note

Build Admin Dashboard

Is your feature request related to a problem? Please describe.
We need a dashboard for admin to solve report requests sending from users.

Are there any related issues? Please list all of them.

  • BE: Ban user
  • BE: Search for a user report

Describe the solution you'd like
image
image

Acceptance criteria

  • Admin has access to admin dashboard
  • Admin can view users’ reports
  • Admin can ban user

Describe alternatives you've considered
N/A

Additional context
Final SRS: https://seneca.sharepoint.com/:w:/s/PRJ566NAAFall2021-Team04/EUqySSjxSqJLiVd2OyWDEAABJI8vfO567WsHBpPZmSQWCg?e=FJcwSh
Figma Design: https://www.figma.com/file/D6OdyoGg8cbL1hAScPEsYI/PRJ-Diagrams

Build Sign Up Form

Is your feature request related to a problem? Please describe.

Our application needs a signup form for users to create their accounts.

Are there any related issues? Please list all of them.

Describe the solution you'd like

image

Acceptance criteria

  • The form should contain input fields for users to input their information.
  • The form is a popup form.
  • The form can be submitted to the server for registering a new account.
  • Email should be validated (e.g. match email format)
  • New Password & Confirm password must have the same value
  • Birthday must not be in the future and year of birth must be above 2004
  • Sex must be selected/have default value

Describe alternatives you've considered

  • None

Additional context

Build Popup Card component

Is your feature request related to a problem? Please describe.
Our app has lots of pop up dialogs so it'd be great to have a popup card component for reusability

Are there any related issues? Please list all of them.

Describe the solution you'd like

Acceptance criteria

  • The card can be resized to fit the content
  • The card is styled with appropriate margin
  • The card should contain X button at top right corner
  • The card should contain a title

Describe alternatives you've considered
Another option is to include the overlay in this component
Group 332

Inspiration here:
https://dev.to/g10dra/create-custom-popup-component-in-react-1o18

Additional context
Full mock-up design: https://www.figma.com/file/D6OdyoGg8cbL1hAScPEsYI/PRJ-Diagrams?node-id=402%3A736

Build Message Page

Is your feature request related to a problem? Please describe.
After the user is matched against several potential partners, let us create a page where he/she can not only view/search the list of matches but also communicate with them as well.

Are there any related issues? Please list all of them.

  • FE: #56 - includes a list of matched partners and a search input to look up partners by name
  • FE: Build a "card" component to display the matched partners in the list
  • FE: #57 - the user can send messages (by text or photos), as well as the buttons for different actions (play ice-breaker game, send message, report user, un-match user,...)
  • FE: Build chat bubble to display the message

Describe the solution you'd like
Screen Shot 2022-01-19 at 7 57 34 PM

Screen Shot 2022-01-19 at 7 58 35 PM

Acceptance criteria

  • User is able to view the message when opening the chat window
  • User is able to search in the list of partners to find someone to talk
  • User is able to send message via text or photo

Describe alternatives you've considered
N/A

Additional context

Connecting Backend to Frontend

There are two approaches to this:

  1. Fetch from REST API

Standard usage documentation
image

  1. Fetch from GraphQL Server
    Usage documentation (e.g. how data & queries look like) is defined in schemas:
type User {
    userID: String
    first_name: String
    last_name: String
    email: String
    bio: String
    password: String
    dob: Date
    sex: String
    location: Location
    hobbies: [String]
    preference: Preference
    avatar: Image
    photo: [Image]
}

We can implement both, but with the time constraint, we should prioritize either of them.

REST API

Pros

  1. No extra research/learning
  2. (Add more items)

Cons

  1. If a route is changed from the backend, frontend may also need to update the call to fetch data.
  2. (Add more items)

GraphQL

Approved by: @tuanthanh2067 @hlavu @mqnguyen5 @oliver-pham

Pros

  1. Changes in the backend won't break the frontend
  2. Avoid over-fetching & under-fetching data
  3. (Add more items)

Cons

  1. As a new technology, both frontend & backend need time to learn & implement
  2. (Add more items)

Project Management Artifacts

Timeline

timeline

Work Breakdown Structure

work breakdown structure

Acceptance Criteria

Milestone 1:

User can find information about Seeksi on the landing page
User can create an account from the landing page
User can login using their account
User can reset their password
User will be able to view their own profile
User can upload photo(s) to their profile
User can remove photo(s) from their profile
User can delete their account

Milestone 2:

User can view other users’ profile cards and profile pages
User can send a match request to another user
User can reject another user
User can unmatch another user
User can submit a report with details
User can cancel a report request

Milestone 3:

User can choose to send message via text, photo, or choose from a library of opening lines when starting a conversation,
User can send text or photo messages to their partner inside the chat room
User can view the messages (either text or photo) sent by the other partner
User can view all messages (either text or photo) when opening the conversation window

Milestone 4:

User can send and receive a game request to another user
User can accept or reject game request sent by another user
User can select β€œTrue” or β€œFalse” to questions when they are in the game
User can quit at any time during the game
User can view the results once the game is completed
User can see the number of common answers
Common answers are highlighted
Admin has access to admin dashboard
Admin can view users’ reports
Admin can ban user

Build Sign In Form

Is your feature request related to a problem? Please describe.

Our application needs a sign in form for users to login Seeksi app.

Are there any related issues? Please list all of them.

Describe the solution you'd like

image

Acceptance criteria

  • The form should contain input fields for users to input their information.
  • The form is a popup form.
  • The form can be submitted to the server and receive access to user account.

Describe the solution you'd like

  • None

Describe alternatives you've considered

  • None

Additional context

Design a GraphQL schema for a user

For example, a user JSON object looks like this:

{
   "userId":{
      "$oid":"61e75f2cfc13ae336b000013"
   },
   "firstName":"Ernest",
   "lastName":"Lodemann",
   "email":"[email protected]",
   "dob":{
      "$date":"2016-04-24T21:30:43.000Z"
   },
   "sex":"Female",
   "location":{
      "city":"Shatian",
      "province":"BC",
      "longitude":113.618216,
      "latitude":22.919769
   },
   "hobbies":[
      "Robot combat",
      "Origami",
      "Collecting"
   ],
   "preference":{
      "gender":"Gender Nonconforming",
      "distance":78,
      "minAge":15,
      "maxAge":6,
      "longTerm":false,
      "shortTerm":true
   },
   "avatar":{
      "origin":"http://dummyimage.com/210x100.png/cc0000/ffffff",
      "small":"http://dummyimage.com/205x100.png/5fa2dd/ffffff",
      "medium":"http://dummyimage.com/182x100.png/5fa2dd/ffffff",
      "large":"http://dummyimage.com/114x100.png/ff4444/ffffff"
   },
   "photo":[
      {
         "origin":"http://dummyimage.com/209x100.png/5fa2dd/ffffff",
         "small":"http://dummyimage.com/108x100.png/ff4444/ffffff",
         "medium":"http://dummyimage.com/238x100.png/5fa2dd/ffffff",
         "large":"http://dummyimage.com/172x100.png/ff4444/ffffff"
      },
      {
         "origin":"http://dummyimage.com/170x100.png/ff4444/ffffff",
         "small":"http://dummyimage.com/131x100.png/ff4444/ffffff",
         "medium":"http://dummyimage.com/116x100.png/cc0000/ffffff",
         "large":"http://dummyimage.com/224x100.png/dddddd/000000"
      },
      {
         "origin":"http://dummyimage.com/218x100.png/cc0000/ffffff",
         "small":"http://dummyimage.com/173x100.png/dddddd/000000",
         "medium":"http://dummyimage.com/240x100.png/5fa2dd/ffffff",
         "large":"http://dummyimage.com/222x100.png/ff4444/ffffff"
      },
      {
         "origin":"http://dummyimage.com/125x100.png/ff4444/ffffff",
         "small":"http://dummyimage.com/104x100.png/ff4444/ffffff",
         "medium":"http://dummyimage.com/139x100.png/dddddd/000000",
         "large":"http://dummyimage.com/115x100.png/dddddd/000000"
      },
      {
         "origin":"http://dummyimage.com/220x100.png/ff4444/ffffff",
         "small":"http://dummyimage.com/136x100.png/ff4444/ffffff",
         "medium":"http://dummyimage.com/245x100.png/ff4444/ffffff",
         "large":"http://dummyimage.com/132x100.png/5fa2dd/ffffff"
      }
   ],
   "bio":"harness magnetic web-readiness",
   "password":"olSBfI"
}

Moving away from Redux

Describe the bug

Because we decided to use Apollo Client GraphQL, Redux is no longer necessary as Redux and Apollo Client will help us to achieve the same thing.

However, it can be done via this

Implement logic for sending messages

Is your feature request related to a problem? Please describe.
In order for the "Message" page to be completed, we need to implement the logic for sending messages from one user to the other

Are there any related issues? Please list all of them.

  • BE: CRUD operations for text messages #177
  • BE: Send photo(s)
  • FE: Build chat bubble to display the message to the user #54
  • FE: Build chat window inside "Message" page #54

Describe the solution you'd like
N/A (Still thinking)

Acceptance criteria

  • When the user press "Send", the message is persisted successfully in the DB
  • Messages can be retrieved from the DB and rendered in a chat bubble
  • Both users inside the conversation can see the messages

Describe alternatives you've considered
N/A

Additional context

Get User Profile

Is your feature request related to a problem? Please describe.

As a user, I want to (re)view my profile on the dating app. I should also be able to view others' profiles.

A profile must include:

  1. Name
  2. Age
  3. Sex
  4. Location
  5. Hobbies
  6. Bio
  7. Avatar
  8. Photos

Are there any related issues? Please list all of them.

Describe the solution you'd like

  • #36
  • Implement a GraphQL query for a user profile

Acceptance criteria

  • Frontend can query any user profile to display it
  • User profile should have all the required fields

Describe alternatives you've considered

N/A

Additional context

Create A Custom Input Component

Is your feature request related to a problem? Please describe.

The application is designed with a bunch of input fields for users to input/edit their information. For frontend developers' convenience, the input component is created for reuse during development process.

Are there any related issues? Please list all of them.

  • None

Describe the solution you'd like

image
Screen Shot 2022-01-23 at 2 04 35 PM
(Optional)
Screen Shot 2022-01-23 at 2 00 43 PM
(Optional)
Screen Shot 2022-01-23 at 2 01 20 PM
(Optional)
Screen Shot 2022-01-23 at 2 08 39 PM

Acceptance criteria

  • Input components should match with Figma design
  • Dropdown should have default value
  • Dropdown/Autocomplete input with multiple values (e.g. Hobbies input) should show and let users select multiple options

Describe the solution you'd like

  • The component should receive props from its parent component.
  • props can be field's width, field's height, input's type, input's value, events and etc...

Describe alternatives you've considered

Additional context

Receiving game request UI

Is your feature request related to a problem? Please describe.
When a partner sends a game request, user can choose to accept or decline the request.

Are there any related issues? Please list all of them.
#50
#59

Related thing
Display game notification for users

Describe the solution you'd like

  • Consider creating notification

Group 354

Acceptance criteria

  • User can accept or decline the request
  • Game UI will show up if user accepts the request (needs more details on this)

Describe alternatives you've considered
We can put the game request in the form of a text message in the conversation
eg: Dustin wants to play game with you. Click to view.
When user clicks on the message, the popup above will show up and user can make their decision.

Additional context
Mock up design: https://www.figma.com/file/D6OdyoGg8cbL1hAScPEsYI/PRJ-Diagrams?node-id=431%3A733

Determine Workflow

Let's research and refine our workflow. The current workflow is:

1. Open an issue for a feature/bug/discussion

Use appropriate labels:

  • What is the type of the issue (feature, bug, refactor, question)?
  • What is its area (backend, frontend, undefined)?
  • What is its priority (priority:low, priority:medium, priority:high)?

Then, add the issue to Seek Projects (Click on Projects section in the right panel and select Seeksi). The issue should be automatically added to our project's Backlog.

2. Discuss the issue

In our Friday weekly meeting, we'll discuss the issue from Backlog. We'll discuss the difficulty of the issues in each sprint and decide on which label to tag for its difficulty (difficulty:easy, difficulty:medium, difficulty:hard). This should ensure we are on the same page on the effort and time spent on each issue.

If we decide to do a particular issue, it will be moved to To Do and tagged priority:medium. Otherwise, it will be tagged wontfix.

3. Implement

Once you start working on an issue, assign yourself to it and move it to In progress.

If you encounter any problem that needs everyone's attention (but can't wait until Friday), let the team know. We can discuss it asynchronously or in our weekly backup meeting (on Wednesdays).

4. Code review

Once you are done with the issue, move it to Code review. Assign or mention any reviewer if necessary.

5. Complete

Once all the reviewers approve of a pull request, merge it. The issue should automatically be closed and moved to Done.

Password reset

Is your feature request related to a problem? Please describe.

If an account owner forgets their password, they can reset it anytime by providing their email.

Are there any related issues? Please list all of them.

  • None (No UI design yet...)

Describe the solution you'd like

  • Configure email template for password reset
  • Design GraphQL schema(s) for Password Reset
  • Implement GraphQL mutation for resetting a password

Acceptance criteria

  • User can receive a password-reset token by providing the email associated with their account
  • A password-reset token is a secure string generated by the system
  • A token can only be used once by one user and must expire after a period of time
  • A link to reset password is sent to their email
  • User can submit new password by following the link sent to their email
  • New password is persisted to the database

Describe alternatives you've considered

Forget password alternative

Additional context

Scripts generator

Is your feature request related to a problem? Please describe.

I'd like to add a script generator :)

Build A Custom Button Component

Is your feature request related to a problem? Please describe.

The application is designed with a bunch of buttons to support users' interaction. For frontend developers' convenience, the button component is created for reuse during development process.

Are there any related issues? Please list all of them.

  • None

Describe the solution you'd like

image

Acceptance criteria

  • Button should have one color (based on the background & design)
  • There should be 2 types of button: a pill (oval) button and a square (rounded corners) button
  • Button should follow the original design

Describe the solution you'd like

  • The component should receive props from its parent component.
  • The component should inform its parent component when it's clicked.
  • props can be button's color, button's text, button's width/height, button's border radius, etc...

Describe alternatives you've considered

  • None

Additional context

Build Game UI

Is your feature request related to a problem? Please describe.
We need an interface for the game play. It should include the following:

  • 10 questions
  • 1 question at a time
  • user can go back and forth between questions
  • 2 choices for each question
  • countdown timer (5mins)

Are there any related issues? Please list all of them.
BE: #248 #289

Describe the solution you'd like
Group 151

Acceptance criteria

  • User can only play the game once
  • User can only play the game within a limited time (5 minutes)
  • User can go back and forth between questions

Describe alternatives you've considered
N/A

Additional context
N/A

Finalize Tech Stack

These are the technologies we're gonna use for our app:

Frontend

Backend

  • Javascript (with comments)
  • Express
  • Apollo Server (#5)
  • MongoDB (Mongoose)

Other technologies on our radar:

Build Chat Window

Is your feature request related to a problem? Please describe.
The "Message" page is where the user can have a conversation with his/her matched partners, either via text or photo.

Thus, we need to implement the following main elements to complete the chat window:

  • The buttons containing different functionalities (play ice-breaker game, send photo message, report user, un-match user,...)
  • The chat bubble, which will contain the messages sent in either text or photo
  • An input element for sending text messages
  • Suggested opening line section where users can view and select an opening line

Are there any related issues? Please list all of them.

  • #72
  • #55
  • #71
  • #75
  • BE: Send photo
  • BE: Create a match
  • BE: Create a chat room

Describe the solution you'd like

  • Buttons are highlighted by blue boxes
  • Chat bubbles are highlighted by red boxes

Screen Shot 2022-01-19 at 7 58 35 PM

Screen Shot 2022-01-19 at 7 58 35 PM

Acceptance criteria

  • Sent messages are displayed properly in the chat bubble
  • User can type in the input to create the text message
  • Buttons are being rendered properly
  • All elements are responsive, which mean they should look alright in mobiles phone or tablets (optional)
  • User can select an opening line from the suggested list
  • User can only see the suggested opening line when the chat window is empty
  • Match button (i.e. "heart" button) should redirect user to chat page
  • Pagination must be implemented for opening lines (3 lines / page)
  • Opening line must be sent on click

Describe alternatives you've considered
N/A

Additional context

MongoDB setup for local development & testing

  • Configure Docker image for the server-side app
  • Configure Docker image for the client-side app
  • Configure Docker image for MongoDB to load mock data
  • Configure Docker Compose to connect frontend, backend, and database

Customize Issue Templates

Our templates may not be refined to our needs. Let's research, find, and suggest a better template here.

Current Feature request template:

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.

Current Bug report template:

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
 - OS: [e.g. iOS]
 - Browser [e.g. chrome, safari]
 - Version [e.g. 22]

**Smartphone (please complete the following information):**
 - Device: [e.g. iPhone6]
 - OS: [e.g. iOS8.1]
 - Browser [e.g. stock browser, safari]
 - Version [e.g. 22]

**Additional context**
Add any other context about the problem here.

Both

  1. Let's add a due date to each issue. This information is important, but GitHub doesn't provide any field/label for it.

Feature request

  1. I think we should add acceptance criteria. This should help reviewers design (manual) tests against PRs.

Bug report

  1. Add actual behavior (minhhang107)

Report UI

Is your feature request related to a problem? Please describe.
Due to the safety of users, our application need the report form to encourage user to report any suspicious users or behavior.

Are there any related issues? Please list all of them.

Describe the solution you'd like
image

Acceptance criteria

  • User can report another user
  • User can report from Match page and Chat page

Describe alternatives you've considered
N/A

Additional context
Final SRS: https://seneca.sharepoint.com/:w:/s/PRJ566NAAFall2021-Team04/EUqySSjxSqJLiVd2OyWDEAABJI8vfO567WsHBpPZmSQWCg?e=FJcwSh
Figma Design: https://www.figma.com/file/D6OdyoGg8cbL1hAScPEsYI/PRJ-Diagrams

Build Edit Mode

Is your feature request related to a problem? Please describe.
We need an Edit Mode so users can modify the info displayed on their Profile Page

Question: when user logs in, should they be redirected to this Edit page or the Profile page? On registration we don't collect their hobbies and preferences. It might be better to go to Edit so they can complete the profile before we calculate match point

Are there any related issues? Please list all of them.

Describe the solution you'd like
Group 329

Acceptance criteria

  • User can upload a new profile photo
  • User can modify their personal information
  • User can upload new photos to profile
  • User can delete existing photos on profile
  • User can delete their account
  • User can cancel all changes
  • New changes are submitted to the server when user hits Save
  • User is redirected to Profile Page after saving or canceling changes

Describe alternatives you've considered
N/A

Additional context

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.