Milestone 2 Review - bounswe/bounswe2023group3 GitHub Wiki

CmpE 451: Project Development in Software Engineering - Milestone 2 Review

Fall 2023 - Group 3 Prediction Polls

Contributors


Table of Contents

  1. Executive Summary
  1. Status and Evaluation of Deliverables
  2. Software Requirements Status
  3. API Endpoints
  4. Testing
  1. Annotations
  2. Individual Contribution Reports

1. Executive Summary

1.1. Introduction

Our project is about a platform where users open “polls” for the other users (and themselves) to make predictions about the properties of events that will be settled in the future. Predictions are evaluated for their accuracy once the property they guess is settled, which then counts towards the rating of its user. Events are to be tagged/categorized, and consequently, users’ scores will also be tagged/categorized. Users may or may not be able to control the public availability of the collective estimate of the properties before they are settled, which is one of the many design decisions the team should make. Profile badges, achievements, and other social features are some others to be considered alongside the scores to hook the users in.

1.2. Project Status

Backend:

  • We implemented poll entity and necessary endpoints.
  • We implemented option entity and necessary endpoints.
  • We implemented user entity and necessary endpoints.
  • We implemented moderator entity and necessary endpoints.
  • We added ci/cd pipeline for deployment process.
  • We implemented like entity and necessary endpoints.
  • We implemented comment entity and necessary endpoints.
  • We added authentication functionality and create auth middleware.
  • We implemented badge entity and necessary endpoints.
  • We implemented tag entity and necessary endpoints.
  • We added unit tests.

Frontend:

  • We implemented poll component and poll view page.
  • We implemented other's profile view.
  • We implemented detailed tag page.
  • We reviewed our work according to milestone 1 feedback.
  • We added prettier format to our code.
  • We modified the CSS and HTML files to avoid redundancy.
  • We added moderator pending poll requests page and poll review page.
  • We implemented poll lists view and added poll filters.
  • We added a logo to our app.
  • We added unit tests.
  • We completed login, register, forget password, verify account implementations.
  • We connected our app to the backend and provided the data connections.

Mobile:

  • we have moderator login page. a moderator can authenticate himself.
  • we have moderator approval page, in which moderator can approve or disaprove a poll creation request
  • we have moderator home page. a moderator can see pending poll creation requests.
  • we have profile page, a user can see his or some other's created/liked/voted polls
  • we have home page, user's can see active/settled polls.
  • we have comment (partially functioning) and like functionalities.
  • we have search page (partially implemented)
  • we have poll settle request page, in which a user can send a settle request consisting of a result (correct option) and a reference to confirm the result.

1.3 Customer Feedback and Reflections

1.4 Changes and Future Plans

Backend:

  • We will implement voting functionality.
  • We will implement ranking and leaderboard functionality.
  • We will enhance the fetching poll endpoints so that frontend and mobile will make flexible filtering on the data.
  • We will implement the feature of adding images to polls.

Frontend:

  • Moderator data connections, actions and dependencies (approve and settle request) will be added.
  • We will implement poll voting.
  • We will add ranks, rating info and leaderboard to the frontend when they are implemented by our backend.

Mobile:

  • implement vote functionality
  • implement settle functionality for moderator
  • link a user's profile to his username in the poll views.
  • add profile settings (add profile photo, privacy settings etc)
  • add pending polls page under profile page
  • notifications
  • (optional) refine color scheme/layout
  • (optional) add more flexibility and fluency for better UX

2. Status and Evaluation of Deliverables

Weekly reports were useful for us to keep track of our progress.


3. Software Requirements Status

Functional Requirements

User Requirements

1.1: Authentication
  • 1.1.1: (Completed) Authentication shall be available on the main page.
  • 1.1.2: (Completed) Users shall be able to authenticate with username and password they've provided upon registering.
  • 1.1.3: (Completed) Users must verify their e-mail after registration.
  • 1.1.4: (In progress) Users shall be treated as guests before authenticating.
  • 1.1.5: (Completed) Users shall be able to do user actions after authenticating.
  • 1.1.6: (Completed) Users shall stay authenticated for a certain time once they are authenticated. Users must be re-authenticated after this peroid ends.
  • 1.1.7: (Completed) User shall be able to reset password by clicking forgot password button.
1.2: (In Progress) Guest Actions
1.3: User Actions
  • 1.3.1: (Not Started) Users shall be able to vote in prediction polls.
  • 1.3.2: (Completed) Users should be able to comment on a prediction poll.
  • 1.3.3: (Completed) Users should be able to like a prediction poll.
  • 1.3.4: (Not Started) Users should be able to comment on a comment on a poll.
  • 1.3.5: (Not Started) Users should be able to like a comment on a poll.
  • 1.3.6: (Not Started) Users should be able to report a poll to the moderators if they find the content of the poll to be inappropriate or if they think there is an error with the reported event outcome.
  • 1.3.7: (Completed) Users shall be able to create a poll request or vote in polls either with their user attached or anonymously
  • 1.3.8: (Not Started) Users shall be able to insert images when creating a poll request.
  • 1.3.9: (Not Started) Users shall be able to create annotation for images and text body of the poll request.
  • 1.3.10: (Completed) Users should be able to follow other users.
  • 1.3.11: (Completed) Users shall be able to send prediction poll creation requests to moderator users. They shall provide a deadline for the prediction poll voting. They shall provide the prediction poll creation request with at least one tag.
  • 1.3.12: (In Progress) Users shall be able to send the outcome verification request of a poll they created to the moderators. This outcome verification request should consist of the outcome and the reference of the outcome so that a moderator can check and verify the result of the poll.
  • 1.3.13: (Completed) Users shall be able to logout from the system.
  • 1.3.14: (Not Started) Users shall be able to change their passwords.
1.4: Moderator Actions
  • 1.4.1: (In Progress) Moderators shall be able to inspect the prediction poll creation requests of the users.
  • 1.4.2: (In Progress) Moderators shall approve/disapprove the prediction poll creation requests of the users.
  • 1.4.3: (In Progress) Moderators shall be able to check and approve/disapprove the outcome result requests of the users.
  • 1.4.4: (Not Started) Moderators shall be able to modify the tags of a prediction poll creation request.
  • 1.4.5: (Not Started) Moderators shall provide their reasons for disapproval of a poll creation request to the user who has sent the request.
  • 1.4.6: (Not Started) Moderators should be able to ban users who misbehave/get reported.
  • 1.4.7: (Completed) Moderators shall be able to logout.

System Requirements

2.1: Rating
  • 2.1.1: (Not Started) The system shall calculate the weight of the event and add/subtract it to/from the rating of the user after the event's outcome is settled.
2.2: Categorization
  • 2.2.1: (In Progress) Every poll and rating of the users shall be categorized using tags.
2.3: User Roles
  • 2.3.1: (Completed) There shall be users with different roles in the system. There shall be moderators and regular users.
2.4: Collective Estimate Of The Result Of The Predictions Made
  • 2.4.1: (Not Started) There shall be an algorithm that calculates the contribution of the users to the collective estimate according to their rating.
2.5: Ranking System
  • 2.5.1: (Not Started) The platform shall include a ranking system based on general and tag specific ratings.
2.6: Trending Section
  • 2.6.1: (Completed) The platform should have a section called "trending" which includes the most popular polls in the platform.

Nonfunctional Requirements

3.1: Portability
  • 3.1.1: (Completed) People should be able to access the platform's webpage from commonly used browsers such as Chrome, Safari, Firefox, and Internet Explorer. UI, UX, and performance should not be affected much from browser to browser.
  • 3.1.2: (Completed) The mobile App should be supported on all Android versions later than Android 13 without any UI, UX or performance issues.
3.2: Privacy
  • 3.2.1: (Completed) The platform shall comply with the rules specified by KVKK and GDPR.
  • 3.2.2: (Not Started) Users shall agree to the Privacy Policy and Terms of Service before signing up.
  • 3.2.3: (Not Started) If the Privacy Policy changes, users must be notified about the changes.
3.3: Security
  • 3.3.1: (In Progress) The platform shall use HTTPS protocol.
  • 3.3.2: (Not Started) The platform shall have a SSL certificate.
  • 3.3.3: (Completed) All sensitive user data, such as passwords, shall be encrypted using a salted hashing algorithm(such as SHA-256).
  • 3.3.4: (Completed) The platform should be robust against Cross-Site Scripting and SQL Injection.
  • 3.3.5: (Not Started) Users shall be notified in the event of a password change.
3.4: Performance and Reliability
  • 3.4.1: (Completed) Load time of any page in the platform shall be maximum 6 seconds.
  • 3.4.2: (In Progress) Load time of any page in the platform shall be under 3 seconds on average.
  • 3.4.3: (In Progress) The platform shall be able to handle at least 10.000 users and 500 user actions simultaneously.
  • 3.4.4: (In Progress) The platform shall respond to any request in at most 3 seconds excluding network based delay.
  • 3.4.5: (In Progress) The platform's average time for responding requests shall be less than 2 seconds excluding network based delay.

4. API Endpoints

You can find all the documentation of our API in the following swagger link.


5. Testing

5.1 Unit Test Reports

5.1.1 Backend

We have written 12 different tests for our backend endpoints.

  • It takes 7-8 seconds on average to complete tests.
  • We get one error in the tests, and it is due to type mismatch between the result and the expected type of the returned value. We are planning to fix the issue until the final milestone.
  • We covered relatively large set of use cases including poll, user and moderator actions and their endpoints.
Screenshot 2023-11-30 at 11 02 36 PM

5.2 Testing Plan

5.2.1 Backend

  • We are planning to add more unit tests since we do not cover all modules at the moment.
  • We are planning to merge these tests and simulate an example scenario where user takes multiple actions. (By utilizing several endpoints)
  • We plan to resolve the existing bug in one of the 12 test cases.
  • We plan to integrate unit tests in our development cycle more by not delaying tests to the end.

6. Annotations

We will add annotations to the user badges and the images so that the annotation will be visible when you hover over that item.


7. Individual Contribution Reports

⚠️ **GitHub.com Fallback** ⚠️