Milestone 1 Review - bounswe/bounswe2023group3 GitHub Wiki

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

Fall 2023 - Group 3 Prediction Polls

Contributors


Table of Contents

  1. Executive Summary
  1. Deliverables
  1. Evaluation of Tools and Processes
  2. Software Requirements Status
  3. 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:

  • Initialization, boilerplates, utils and some tools implemented like Swagger, Helmet, Cors.
  • Database connection is created.
  • CRUD operations for user are created.
  • Authentication endpoints are created like login, register, verify, forgot and reset password.
  • Authorization for logged-in user and verified user is created with JWT Token.
  • CRUD operations for Poll are created.
  • Dockerized and deployed to AWS EC2 instance.

Frontend:

  • Initialized, the project, created a READ.me.
  • Decided on color palette.
  • Implemented poll request, user profile, login, signup, forget password, welcome and home pages with relevant components.
  • Connected login, signup and forget password pages with backend.
  • Implemented page routing.
  • Dockerized and Deployed the frontend application.

Mobile:

  • Implemented welcome, login, e-mail verification for sign-up, sign-up page, forget password pages and connected them to endpoints.
  • Implemented mock home page with "homePagePollViews" and sidebar to navigate to the other pages. Also standalone poll view page for viewing a single poll in detail. Besides, implemented the poll request creation page. Those are not connected to the endpoints yet.
  • Actualized page routing.
  • Applied the decided color palette on our app.
  • Built android apk.

1.3 Future Plans

Backend:

  • Creating polls with specific options and tags will be implemented.
  • Like and comment endpoints will be implemented.
  • Moderator entity and endpoints will be implemented.
  • Semantic search, rating and trending algorithms will be implemented.

Frontend:

  • Alter static user data with the data to be retrieved from backend
  • Implement a poll view
  • Implement poll request view for admin users

Mobile:

  • Implement the home page final version, and also add bottom bar to the home page.
  • Implement like and comment to our app.
  • Implement the profile review page.
  • Implement the notifications page.
  • Implement the settings page.
  • Implement the pages(poll request review, report review, poll settle review, home) for moderators.

2. Deliverables

2.1 Status and Evaluation of Deliverables

We've been reviewing our requirements from the start of the semester and our software requirements are almost complete. We made sure to include and edit all necessary requirements in time so that they won't be changed and affect our implementation later. The requirements are still open to small additions that won't interfere with our work so far. All members are familiar with the software requirements and we are building our project towards these spesifications.

We reviewed and edited our UML diagrams before starting the implementation. Class and Sequence diagrams are especially useful for our backend team for creating the database, entities and some functionalities of the app. The mobile and frontend teams frequently make use of the Use Case diagram.

Our mockups served as a great example for us to imagine how the user interface would look like. We also used them to see which type of design and color palette would look good more presentable on our app.

The scenarios are useful for us such that we manually test our application by relying on these example situations.

The project plan guides our project development. With this roadmap we can make adjustments on our ways so that we ensure to meet the deadlines and bring forth a well designed, well planned product.

This semester we are sticking with the communication plan we made last semester.

The responsibility assignment matrix helps us create issues, and to let the members check their assigned responsibilities.

So far we prepared four weekly reports. We meet weekly as a whole team to get on the same page on our implementation and to see how our project is going so far. These weekly reports helps us catch up with the roadmap, make important decisions as a group and to be aware of possible shortcomings and risks.

Most of our meeting notes are from the previous semester because we have been meeting weekly and preparing weekly reports this semester, but we have a couple of additional meeting notes from our sub team meetings.

We dockerized and deployed the backend, mobile and frontend apps of our project. With this, other people can quickly review how our implementation is going so far.

2.2 Overall Reflection and Project Plan Review

  • We made some changes on UML diagrams after changes on requirements.
  • We created RAM.
  • We created weekly reports in every lab regularly. We created project plan to apply throughout the semester:
  • We mostly sticked to our project roadmap and made it to the milestone 1 deadline. Authentication and authorization were implemented on backend side. Necessary pages were implemented on both frontend and mobile. We encountered some problems before the deadline. We said we can create logger and exception layer implementations on backend but we decided to postpone these two. Also we encountered some problems on deployment of Angular frontend app but we solved the deployment problem.

3. Evaluation of Tools and Processes

Github

We used Github especially for acting as our common code base, for reviewing, correcting and approving each other's work, for creating issues related to our short and long term goals, and for displaying our software artifacts for people to see.

Discord

We held some online meetings through here. We also communicated with our teacher, course assistants and other classmates from Discord.

Whatsapp

We contacted each other through Whatsapp for informing the group members about urgent issues, group meeting location and times, and small updates.

Canva

We used Canva to help with our frontend and mobile app designs. We experimented with different color palettes and improved some visual aspects of our widgets by making use of Canva.

Instagantt

Instagantt helped us create our project roadmap, determine the assignees and due dates of our tasks, and easily turn this set of tasks to a gantt chart.

Angular CLI

The frontend team used Angular framework for building the web design. With Angular, we created common widgets, implemented user interfaces for different sections of our app, and constructed requests/services between frontend and backend.

Flutter

Flutter was used to implement our mobile application. Flutter helped us with efficiency in our implementation and was useful to us because of its widgets and compatibility.

NodeJS

We made use of NodeJS to create the backend of our app. NodeJS is commonly used in backend development, and performs well on the backend connection with the database.

NestJS

We used NestJS as backend framework. NestJS is one of the most common backend frameworks of NodeJS after Express. It facilitates the development process and prevent developers from too much boilerplates.

PostgreSQL

We decided to use PostgreSQL as database of the project. It is relational database unlike NoSQL databases like MongoDB. Main reason we decided on PostgreSQL is it is common, it has detailed documentation and open-source.

Swagger

Backend team utilized Swagger for reporting and sharing their database implementation with the rest of the group. Swagger was especially useful for satisfying the communication with the backend of our project.

Docker

We stored our build files, requirements and dockerized our application with Docker.

Amazon Web Services

We used AWS to create our remote host, deploy our app and to showcase it to others.


4. Software Requirements Status

We made some changes on requirements:

  • 1.4.7 Moderators shall be able to logout requirement is added
  • 2.7 Poll types requirement is deleted.
  • 1.3.7: Users shall be able to create a poll request or vote in polls either with their user attached or anonymously requirement is added.
  • 1.3.8: Users shall be able to insert images when creating a poll request requirement is added.
  • 1.3.9: Users shall be able to create annotation for images and text body of the poll request requirement is added.
  • 1.1.3: Users must verify their e-mail after registration requirement is added.
  • 1.1.7: User shall be able to reset password by clicking forgot password button requirement is added.
  • 1.3.12: Users shall be able to change their passwords requirement is added.

5. Individual Contribution Reports