Home Page

Backend Changes

  • Home Page Image Attached to an Organization

    • Guest Description

    • Links : Name + Url + icon?

  • Links: TBD

  • Featured Projects on an organization

  • Announcements: (Name, slackId, User?, Timestamp, Text, Unread Users, Organization)

    • If we have a user with the given slackId, associate with our user

  • User: Unread Announcements

  • Get My Tasks, Get my Change Requests, Get My work packages…

  • Admin tool to set the slack organization id to a FinishLine organization

 

 


Breakdown of tickets

Ticket #_:

 

Description: 

 

Acceptance Criteria:

 

Proposed Solution:

 

Schema Changes:

 

Blockers:

 

Screenshots:

 

Notes:

 

Potential Tickets:

  • Create guest view tab in admin tools to edit guest intro component

Thoughts/Questions: 

  • How should we set up getting all the team's work packages? 

    • We could probably have a project endpoint to return all work packages of a team and then go through each user’s team and call the endpoint one each.

  • We should have an endpoint to get all the tasks assigned to a team

    • How should we define a task assigned to a team?

  • We should create endpoints for getting upcoming, and in progress work packages for a team

  • How should we display upcoming design reviews? Should we create a design review card?

  • How should we also define upcoming? Within the next 2 weeks? 

  • We should make another ticket for adding days overdue to the WorkPackageCard

  • Is the duration of a work package days or weeks?

Notes From Meeting:

  • We need a getAllTeamTasks endpoint

    • The endpoint will need to use the current user and the teamAsHead and teamAsLead teams each team will have projects and in those projects there will be tasks (as a project is a wbsElement)

  • We need a getAllTeamWorkpackages

    • Use the current users teamAsHead and teamAsLead teams and then from there get the project and then from there the work packages

  • Make a ticket to create util function to determine if a work package is upcoming 

  • Make a ticket to filter out upcoming work packages

  • Make a ticket to filter out in progress work packages

  • Message product about design review display

  • Make ticket to add days overdue to Work Package Detail Card

    • Check if there needs to be a ticket to make a util function to get the number of days a work package is overdue 

  • Make ticket for adding guest view tab

  • Make ticket for getTeamDesignReviews endpoint

  • Product is thinking about adding overdue work packages to dropdown, and replacing with upcoming design reviews

    • Make a ticket for Upcoming design reviews section

  • Change Team Tasks to Overdue Team Tasks

  • Make ticket for admin notifications

    • We need to add endpoints for getAdminUnreadNotifications and setAdminUnreadNotifications 

  • Make ticket for slack messages spike

  • Make general announcements ticket

    • We need to add endpoints for getUserUnreadAnnouncements and setUserUneradAnnouncements

  • Schema Changes:

    • Organization: logo, generalDescription, and featuredProjects

    • Announcements model (TBD)

 

Ticket #1: Create setOrganizationDescription Endpoint

 

Description: 

We need to create an endpoint in the organization router to set the general description of an organization in the backend.

First, we need to update the organization model to include a generalDescription as an optional field in the prisma schema. Make sure to run yarn prisma:migrate after any changes to the schema to perform a migration.

Then we need to add a post endpoint to the organization router under the route 'organization/general-description/update'. Include unit tests and a manual test using postman to make sure everything is working correctly.

 

 

Acceptance Criteria:

 

  • [ ] There is a new `generalDescription` field in the organization model

  • [ ] There is a new post endpoint in the organization router under the route 'organization/general-description/update'

  • [ ] unit tests and manual testing

 

 

Proposed Solution:

 

Add the new endpoint to the organization router, set up the controller to process the request, and set up the service to set the general description in the database. Check out some of the other endpoints we use to update the backend on Finishline.

 

Schema Changes:

 

Add `generalDescription` to organization model

 

Blockers:

 

Screenshots:

 

Notes:

 

Ticket #2: Create setOrganizationLogo Endpoint

 

Description: 

 

We need to create an endpoint in the organization router to set the logo of an organization in the backend.

First, we need to update the organization model to include a `logo` as an optional field in the prisma schema. Make sure to run yarn prisma:migrate after any changes to the schema to perform a migration.

Then we need to add a post endpoint to the organization router under the route 'organization/logo/update' that accepts a file upload. Include unit tests and a manual test using postman to make sure everything is working correctly.

 

Acceptance Criteria:

  •  

  • [ ] There is a new `logo` field in the organization model

  • [ ]There is a new post endpoint in the organization router under the route 'organization/logo/update'

  • [ ] unit tests and manual testing

 

 

Proposed Solution:

 

We already do something very similar in the 'organization/images/update' post endpoint, which you can use as a reference. We store images by first uploading an image to google drive, and storing its google file id in the backend. In your controller, be sure to utilize the downloadImageFile() function in the google-integration.utils to upload the logo to google drive.

 

Schema Changes:

 

Add `generalDescription` to organization model

 

Blockers:

 

Screenshots:

 

Notes:

 

Ticket #3: Create getOrganizationDescription Endpoint

 

Description: We need an endpoint in the organization router under the route ‘organization/general-description’ that does not take in a payload and returns the general description of an organization. Include unit tests and a manual test using postman to make sure everything is working correctly.

 

Acceptance Criteria:

  • [ ] create getOrganzationDescription endpoint under the route ‘organization/general-description’

  • [ ] Unit tests and manual testing (screenshot) is included

 

Proposed Solution:

 

See other get endpoints within any of the routers on Finishline as a reference.

 

Schema Changes:

 

Blockers:

 

Screenshots:

 

Notes:

 

Ticket #4: Create getOrganizationLogo Endpoint

 

Description: We need an endpoint in the organization router under the route ‘organization/logo’ that does not take in a payload and returns the logo of an organization. Include unit tests and a manual test using postman to make sure everything is working correctly.

 

Acceptance Criteria:

  • [ ] create getOrganzationLogo endpoint under the route ‘organization/logo’

  • [ ] Unit tests and manual testing (screenshot) is included

 

Proposed Solution:

 

See other get endpoints within any of the routers on Finishline as a reference.

 

Schema Changes:

 

Blockers:

 

Screenshots:

 

Notes:

 

 

 

Ticket #5: Guest Organization Info Component

 

Description: 

 

On the guest home page we are going to have an intro component that will give the user some insight into the current state of their organization. We want to have a component that lists the organization’s name, general description, and useful links. 

 

To retrieve the general description of an organization, we have to create two hooks to make an api call to the backend. The first for the organization’s general description, and the second for its useful links.

 

Acceptance Criteria:

  • [ ] Create the organization info component in the guest homepage that includes the organization title, general description, and useful links

  • [ ] Create hooks for the organization general description and useful links

 

Proposed Solution:

 

Schema Changes:

 

Blockers:

  • #1

  • #3

 

Screenshots:

 

Notes:

 

Ticket #6: Create Member Encouragement

 

Description: 

 

We want guests that are already members of their organization to get a reminder to talk to heads and become a registered member on Finishline. This will be a separate component in the quest intro component. Clicking the ‘See Teams’ button should redirect the user to the teams page to encourage them to browse the teams within their organization.

 

Acceptance Criteria:

  • [ ] Create Member Encouragement Component in the guest homepage that includes a link to the Teams Page 

 

Proposed Solution:

 

Schema Changes:

 

Blockers:

 

Screenshots:

 

 

Notes:

 

Ticket #7: Organization Logo

 

Description: In the guest intro component, we want a large display of the organization logo. 

To retrieve the organization’s logo, we need to create a hook that makes an api call to the organization endpoint that returns the organization logo.

 

Acceptance Criteria:

  • [ ] A new LogoDisplay component is added to the guest home page that takes in an image

  • [ ] hook is created that makes an api call to get organization logo endpoint

 

Proposed Solution:

 

For the image display you can reference this: Does Material UI have an Image component?  

Take a look at how we structure hooks on Finishline and use it as a reference to make the hook to get the organization logo

 

Schema Changes:

 

Blockers:

  • #2

  • #4

 

Screenshots:

 

 

Notes:

 

Ticket #7: Create setFeaturedProjects Endpoint

 

Description: 

 

We need to create an endpoint in the organization router to set the featured projects of an organization in the backend.

First, we need to update the organization model to include a `featuredProjects` as an optional field in the prisma schema. Make sure to run yarn prisma:migrate after any changes to the schema to perform a migration.

Then we need to add a post endpoint to the organization router under the route 'organization/featured-projects/update'. Include unit tests and a manual test using postman to make sure everything is working correctly.

 

Acceptance Criteria:

 

  • [ ]  There is a new featuredProjects field in the organization model

  • [ ] There is a new post endpoint in the organization router under the route 'organization/featured-projects/update'

  • [ ] unit tests and manual testing

 

Proposed Solution:

 

Add the new post endpoint to the organization router, that accepts an array of project ids, set up the controller to process the request, and set up the service to update the featured projects on an organization.

 

Schema Changes:

Add `featuredProjects` to organization

 

Blockers:

 

Screenshots:

 

Notes:

 

 

Ticket #8: getFeaturedProjects

 

Description: 

 

We need a way to retrieve an organization's featured projects. Create an endpoint in the organization router under the route 'organization/featured-projects' which does not take in a payload, which returns a list of the featured projects of the organization.

 

Acceptance Criteria:

 

  • [ ] create getFeaturedProjects endpoint under route 'organization/featured-projects'

  • [ ] Unit tests and manual testing (screenshot) is included

 

Proposed Solution:

 

See other get endpoints in the organizations.routes.ts and model this new endpoint off other previous get endpoints.

 

Schema Changes:

 

Blockers:

 

Screenshots:

 

Notes:

 

Ticket #9: Add Guest View Tab To Admin Tools

 

Description: 

We need a section on the Admin Tools Page dedicated to customizing the Home Page for guests. We need to add an extra tab to the Admin Tools Page called ‘guest view’ that is only accessible if the user is an admin, so we have a place to include new admin tools.

 

Acceptance Criteria:

  • [ ] a new tab is added to the admin tools page called ‘guest view’ that is accessible to only admins

 

Proposed Solution:

Take a look at the admin tools page and look into how we set up tabs on Finishline.

Schema Changes:

 

Blockers:

 

Screenshots:

Dev is only responsible for tabs

Notes:

 

 

Ticket #10: Edit General Description

 

Description: 

We want there to be a way to edit the general description of an organization. We want an admin to have the ability to update the general description to ensure it is up to date and reflects the current state of the organization. On the admin tools page, under the Guest View Tab we want to add a text box where we can update the general description. When you click the button to update the description, a modal should appear to input the new description.

To be able to update an organization’s general description from the frontend, we need to create a hook that makes an api call to the backend endpoint for returning the organization general description (/organization/general-description/)

Make sure you are signed in as Thomas Emrax (app admin) when working on development mode to access the admin tools page.

 

Acceptance Criteria:

 

  • [ ] Text box is added to admin tools page

  • [ ] Modal appears on edit to update description

  • [ ] Hook is created to return the general description of the user’s organization

 

Proposed Solution:

 

Use the NERModal.tsx to create a modal with a text field to edit the general description. There are a few examples of text fields being used on a modal on Finishline, one being creating a new car in the admin tools. You can use this as an example. But in this example, when the description is submitted, it should call the hook to update the general description of an organization.

Take a look at some of the other hooks that we have on Finishline, particularly in the organization hooks, which you can use as reference for this hook

 

Schema Changes:

 

Blockers:

  • #1

  • #3

  • #9

 

Screenshots:

Notes:

 

Ticket #11: Edit Featured Projects

 

Description: 

We need a way to edit an organization's featured projects. We want an admin to have the ability to update the featured projects of an organization to give guests an idea of the cool projects being worked on. On the admin tools page, under the Guest View Tab, we want a list of project labels that display all the featured projects with a button to update them. When the button is clicked, a modal is opened with a text box that shows the current featured projects and a place to search up another project in the organization.

To be able to update an organization’s featured projects from the frontend, we need to create a hook that makes an api call to the backend endpoint for returning the organization’s featured projects (/organization/featured-projects/)

Make sure you are signed in as Thomas Emrax (app admin) when working on development mode to access the admin tools page.

 

Acceptance Criteria:

  • [ ] Featured Projects section is added to admin tools that displays project labels of all featured projects

  • [ ] Modal with section to search and select projects on organization

  • [ ] Hook is created that returns the featured projects of the user’s organization

 

Proposed Solution:

 

Use the autocomplete component from mui material (React Autocomplete component - Material UI ) where the options are all projects within an organization, which can be fetched by calling the hook useAllProjects to set up the project selection in the modal. Call the hook you created to update an organization's featured projects on submit.

Take a look at some of the other hooks that we have on Finishline where we update data in the backend, particularly in the organization hooks, which you can use as reference for this hook.

 

 

Schema Changes:

 

Blockers:

  • #7

  • #8

  • #9

 

Screenshots:

Notes:

 

Ticket #12: Featured Projects Section (Guest)

 

Description: 

On the guest home page, we want to have a component where the organization's featured projects are displayed. This should be in a separate page block under the Guest Intro Component., and should display a list of project cards for all featured projects

 

 

Acceptance Criteria:

  • [ ]  A component that displays the organization's featured projects is placed on the guest home page

 

Proposed Solution:

 

Add a new component to the guest home page that uses the ProjectDetailCard.tsx to display the featured projects of the organization. This new component should utilize the PageBlock Component as well. 

You can retrieve an organization’s featured projects by calling the useFeaturedProjects() hook.

 

Schema Changes:

 

Blockers:

  • #8

Screenshots:

Notes:

 

Ticket #13: Create getCurrentUserTasks Endpoint

 

Description: 

We need a way to retrieve all of the tasks assigned to the current user. We need an endpoint in the task router that does not take in a payload that returns all the tasks assigned to the current user. This endpoint should be under the route 'tasks/current-user'

 

Acceptance Criteria:

  • [ ] A new endpoint is added to the task router under 'tasks/current-user' that returns all tasks assigned to the current user

  • [ ] Unit tests and screenshot of manual testing with postman

 

Proposed Solution:

 

Use the getCurrentUser util to get the current user to return the `assignedTasks` field of the user to access all tasks the user was assigned to

 

Schema Changes:

 

Blockers:

 

Screenshots:

 

Notes:

 

Ticket #14: Create getTeamProjects util

 

Description: 

We need a way to retrieve all the projects assigned to a team. We want a util in the backend in teams.utils.ts that takes in a string teamId and returns all the projects assigned to the team.

 

Acceptance Criteria:

  • [ ] a util function is created that takes in a team id and returns all projects assigned to the team

Proposed Solution:

Take a look at how we query the backend with prisma. For this function, you have to query the Team model and return the projects field within the team.

Schema Changes:

 

Blockers:

 

Screenshots:

 

Notes:

 

 

Ticket #15: Create getTeamWorkPackages Endpoint

 

Description: 

We need a way to get all work packages assigned to a specific team. We need to create a new endpoint under the route ‘teams/work-packages/:teamid’ that does not take in a payload in the teams router that will retrieve all of the work packages within the projects that are assigned to a team.

Include unit tests and a screenshot of postman manual testing to ensure the endpoint is working properly.

 

Acceptance Criteria:

  • [ ] Endpoint that returns all of a team’s work-packages based on a team id

  • [ ] Unit test and postman screenshot

Proposed Solution:

Take a look at some of the other endpoints in the teams router to get a reference for how to set up this endpoint.

You can access all of a team’s work packages by accessing the projects field in the team model, which does contain work packages. Use the getTeamProjects util to access all the projects assigned to a team.

Schema Changes:

 

Blockers:

  • #14

Screenshots:

 

Notes:

 

Ticket #16: Create getTeamWorkDesignReview Endpoint

 

Description: 

We need a way to get all work packages assigned to a specific team. We need to create a new endpoint under the route ‘teams/design-reviews/:teamid’ that does not take in a payload in the teams router that will retrieve all of the design reviews within the projects that are assigned to a team.

Include unit tests and a screenshot of postman manual testing to ensure the endpoint is working properly.

 

Acceptance Criteria:

  • [ ] Endpoint that returns all of a team’s design reviews based on a team id

  • [ ] Unit test and postman screenshot

Proposed Solution:

Take a look at some of the other endpoints in the teams router to get a reference for how to set up this endpoint.

You can access all of a team’s design reviews by accessing the projects in the team, which is a wbs_element that has design reviews.. Use the getTeamProjects util to access all the projects assigned to a team.

Schema Changes:

 

Blockers:

  • #14

Screenshots:

 

Notes:

 

Ticket #17: Team Work Packages Display 

 

Description: 

 

We want members to be able to see all the active work packages for the teams they are in.

This section should be a page block with a vertical list of all the work packages that are currently active within the user's teams. The page block should be titled 'My Team's Work Packages' followed by the number of active work packages. Each work package should be displayed as a card, so use the WorkPackageCard component that is already created.

Create hook that makes an api call to the getTeamWorkPackages endpoint that returns all work packages assigned to a team

 

Acceptance Criteria:

  • [ ] Create page block titled 'My Team's Work Packages ()' that shows all active work packages in a user's teams

  • [ ] Hook that returns all work packages assigned to a team

 

Proposed Solution:

Use the PageBlock component and WorkPackageCard component that are already made in order to create the display.

Take a look at some of the other hooks we have on Finishline as a reference. We already have an endpoint under the route ‘teams/work-packages/:teamid’ that will send a json response with all the work packages assigned to a team, so the hook should make an api call to this endpoint.

 

Schema Changes:

 

Blockers:

  • #15

Screenshots:

 

Notes:

 

Ticket #18: MyTasks Section (Member)

 

Description: 

 

We want members to have a display of all the tasks assigned to them so they have a good idea of what they have to work on.

We need a hook to make an api call to the getCurrentUserTasks endpoint in the backend that returns the current user’s assigned tasks.

We need a task card that includes the task number, the project number and name the task is under, task notes, due date, priority, and a label to indicate when the task is overdue. If the task is overdue, the task card should be outlined in red and a pop up should appear on hover.

We need a page block titled 'My Tasks' along with the number of tasks assigned to the current user. Call the hook useCurrentUserTasks to get all of the tasks assigned to a current user.

If there are currently no tasks assigned to the member, a display should appear in the page block notifying the user that they are not assigned to any tasks.

 

Acceptance Criteria:

 

  • [ ] Create Task Card with all properties mentioned above

  • [ ] Create hook to return the current user’s assigned tasks

  • [ ] Create page block with title and a list of tasks assigned to the current user

  • [ ] Create display in page block when there are no tasks assigned to the current user

 

Proposed Solution:

 

Create a new component in the Member Home Page for the TaskInfoCard. Take a look at how the WorkPackageCard is structured, as the task card will have a similar structure. Additionally, create a new component that uses the page block component to display the task info card you created to display the user's tasks.

Take a look at some of the other hooks that we have on Finishline, particularly in the organization hooks, which you can use as reference for this hook.

For the tool tip reference this link and look at the arrow tool tip section (React Tooltip component - Material UI )

 

Schema Changes:

 

Blockers:

  • #13

 

Screenshots:

 

 

 

Notes:

 

Ticket #19: Unreviewed Change Requests (Head/Lead, Admin)

 

Description: 

They want heads/admins to be able to view all their unreviewed change requests for their projects in a central area on the home page to easily check the status of project management. 

Use the ChangeRequestRow component that is already made to make a horizontal list of all the users unreviewed change requests.

The page block should be titled ‘Unreviewed Change Requests’ followed by the number of unreviewed change requests in the list.

 

Acceptance Criteria:

 

  • [ ] A new UnreviewedChangeRequestDisplay component is added to the lead homepage

 

Proposed Solution:

We already do something very similar to this on the Change Request Page, so you can use that as reference

 

Schema Changes:

 

Blockers:

 

Screenshots:

 

 

Notes:

 

Ticket #20: Create getTeamTasks 

 

Description: 

We need a way to get all the tasks assigned to a specific team. We need a new endpoint in the teams router under the route ‘teams/tasks/:teamid’ that does not take in a payload that will return all tasks within all the projects assigned to a team based on the given team id in the params. 

Include unit tests and a screenshot of postman manual testing to ensure the endpoint is working properly

Acceptance Criteria:

  • [ ] Endpoint that returns all of a team’s tasks based on a team id

  • [ ] Unit test and postman screenshot

Proposed Solution:

Take a look at some of the other endpoints in the teams router to get a reference for how to set up this endpoint.

You can access all of a team’s tasks by accessing the projects field in the team model, which is a wbs element that contains assigned tasks. To access all projects use the getTeamProjects util to get all projects assigned to a team.

Schema Changes:

 

Blockers:

  • #14

Screenshots:

 

Notes:

 

Ticket #21: My Team’s Overdue Tasks Section (Head/Lead)

 

Description: 

 

We want leads to be able to see the number of overdue tasks their team is responsible for in order to ensure that the tasks get completed as soon as possible. We define an overdue task as a task that has a deadline that is earlier than the current day.

This should be a new component in the leads page that consists of a page block titled ‘My Team’s Overdue Tasks ’ followed by the number of overdue tasks the team is assigned to. This page block should display a list of task cards. Create a hook that makes an api call to the getTeamTasks endpoint that returns all tasks assigned to a team.

 

Acceptance Criteria:

  • [ ] A new component is made in the lead homepage that lists all of a team’s overdue tasks 

  • [ ] Hook that returns all tasks assigned to a team

Proposed Solution:

 

Use the PageBlock component and TaskDetailCard to create the entire My Team’s Overdue Tasks Section. 

Take a look at some of the other hooks we have on Finishline as a reference. We already have an endpoint under the route ‘teams/tasks/:teamid’ that will send a json response with all the tasks assigned to a team, so the hook should make an api call to this endpoint. After retrieving all the tasks assigned to a team, make sure to filter out all the tasks that are not overdue.

 

Schema Changes:

 

Blockers:

  • #15

 

Screenshots:

 

Notes:

 

Ticket #22: Create getUpcomingWorkPackages Util Function 

 

Description: 

Create a new util function in work-package.utils that takes in a list of work packages and returns only the work packages that are upcoming. We define an upcoming work package as a work package with a start date that is within the next 2 weeks of the current day

 

Acceptance Criteria:

  • [ ] util in work-package.utils function that takes a list of work packages and returns a list of all the work packages where the start day is within two weeks of the current day

Proposed Solution:

Each work package has a start date field, so filter out all work packages that have a start day not within the next 2 weeks.

Schema Changes:

 

Blockers:

 

Screenshots:

 

Notes:

 

Ticket #23: Create getInProgressWorkPackages Util Function 

 

Description: 

Create a new util function in work-package.utils that takes in a list of work packages and returns only the work packages that are in progress. We define an in progress work package as a work package with an active status

 

Acceptance Criteria:

  • [ ] util in work-package.utils function that takes a list of work packages and returns a list of all the work packages that are currently active

Proposed Solution:

Each work package is a wbs element that has a status field. Check if the status is active.

Schema Changes:

 

Blockers:

 

Screenshots:

 

Notes:

 

Ticket #24: Create getOverdueWorkPackages Util Function 

 

Description: 

Create a new util function in work-package.utils that takes in a list of work packages and returns only the work packages that are overdue. We define an in progress work package as a work package with an end date that is earlier than the current day and the status is anything but complete. 

 

Acceptance Criteria:

  • [ ] util in work-package.utils function that takes a list of work packages and returns a list of all the work packages that have an end date that is that is earlier than the current date and is not complete

Proposed Solution:

Each work package is a wbs element that has a status field. Check if the status is not complete. You can calculate the end date of a work package with the start date and duration

Schema Changes:

 

Blockers:

 

Screenshots:

 

Notes:

 

Ticket #24: Create getTeamDesignReviews

 

Description: 

We need a way to get all work packages assigned to a specific team. We need to create a new endpoint under the route ‘teams/design-reviews/:teamid’ that does not take in a payload in the teams router that will retrieve all of the design reviews associated with the team id passed in through the params.

Include unit tests and a screenshot of postman manual testing to ensure the endpoint is working properly.

Acceptance Criteria:

  • [ ] a new endpoint is created under the route ‘teams/design-reviews/:teamid that returns all design reviews assigned to a team

Proposed Solution:

Take a look at some of the other endpoints in the teams router to get a reference for how to set up this endpoint.

To access the design reviews of a team, you have to access the team’s projects, which is a wbs element that contains design reviews.  Use the getTeamProjects util to access all the projects assigned to a team.

 

 

Schema Changes:

 

Blockers:

  • #14

Screenshots:

 

Notes:

 

Ticket #25: Selection View (Head/Lead, Admin) 

 

Description: 

We want leads to be able to customize their homepage to best suit their needs and facilitate project management. We want to have a page block where the title functions as a dropdown selector to select what is displayed within the pageblock.

There will be three options including: ‘In Progress Work Packages’, ‘Upcoming Work Packages’, and Overdue Work Packages’ with each title followed by the number of items in the entry.

In Progress Work Packages are work packages that are currently active in the head’s team, and can be displayed with the WorkPackageDetailCard.

Upcoming Work Packages are work packages that are currently active in the head’s team, and can be displayed with the WorkPackageDetailCard.

The Overdue Work Packages are work packages whose start date is within the next two weeks in the head’s team, and can be displayed with the WorkPackageDetailCard.

To get all work packages of a team, create a hook that makes an api call to ‘teams/work-packages/:teamid’ endpoint in the backend to return all work packages assigned to a team. 

Use the utils functions getUpcomingWorkPackages, getInProgressWorkPackages, and getUpcomingWorkPackages respectively to filter out the work packages for each of the three sections of the selection.

If a section does not have an items, remove it from the selection.

 

Acceptance Criteria:

  • [ ] new component in the leads/admins home page is created that is a page block with an option to select upcoming work packages, in progress work packages, and overdue work packages

  • [ ] Create hook that takes in all work packages assigned to a team

Proposed Solution:

Use the Page Block component for to create the page block that includes the display. 

For the selector, use the mui material text field and include menu items (React Text Field component - Material UI ). 

Use the work package card that is already made to display all of the work packages.

Take a look at how we set up some of the other hooks on Finishline, and use it for reference for this hook.

 

Schema Changes:

 

Blockers:

  • #15

Screenshots:

Notes:

 

Ticket #26: Upcoming Design Reviews Section (Heads/Leads)

 

Description: 

We want a section where heads can see all the upcoming design reviews. This component will be a new page block on the heads view title ‘Upcoming Design Reviews’ followed by the number of items in the list. We define an upcoming design review as a design review that is scheduled within two weeks of the current date and is not done.

To access a team’s design reviews, a hook will need to be created to make an api call to the backend endpoint that returns all design reviews assigned to a team.

We currently do not have a design review card. Create a new component called DesignReviewCard.tsx that we will use to display upcoming design reviews. This card should contain the wbs name, date and time, location, and status of the design review.

Acceptance Criteria:

  • [ ] new component is added to the head/lead home page that displays all upcoming design reviews for the head’s team

  • [ ] hook is created that returns all design reviews assigned to a team

  • [ ] Design review card is created

Proposed Solution:

For creating the hook, take a look at how we set up some of the other hooks we have on Finishline and use that as a reference for this one. Once the hook returns all the design reviews, filter the design reviews by which are upcoming.

For the design review card, take a look at the WorkPackageCard and use that as a reference for creating a new card. Refer to the design review model in the prisma schema to take a look at the fields you can access on a design review to populate the card.

Schema Changes:

 

Blockers:

  • #24

Screenshots:

Notes:

 

Ticket #27: Add Overdue Days to Work Package Card

 

Description: 

We want to update our work package card to include the number of days the work package is overdue in order to alert users that action is needed to stay on top of deadlines. This indicator should be placed in the bottom right corner of our WorkPackageCard that is already made, and should only appear if the work package is overdue.

 

Acceptance Criteria:

  • [ ] Update the WorkPackageCard.tsx to include the number of days a work package is overdue 

Proposed Solution:

 

Schema Changes:

 

Blockers:

 

Screenshots:

 

Notes:

 

 

Ticket #28: Overdue Work Package Section (Head/Lead)

 

Description: 

 

We want a section for heads/admins to see all overdue work packages on their homepage to ensure they stay on top of deadlines and facilitate project deadlines. This should be a pageblock outlined in red with where the title ‘Overdue Work Packages’ is in another separate block.

The work packages should be displayed with a work package card that also displays the number of days overdue the work package is. 

 

Acceptance Criteria:

 

  • [ ] Create page block with red outline and blocked out title (‘Overdue Work Packages’) that contains a list of overdue work packages

 

Proposed Solution:

 

Utilize the Page Block component for the page block and take a look at sections of the home page that contains a list of work package cars for reference on how to display the overdue work packages.

 

Schema Changes:

 

Blockers:

 

Screenshots: 

 

Notes:

 

Ticket #29: Admin Notifications 

 

Description: 

We want to create a notification system for admins to stay up to date on the current status of the projects within their organization. The admin will receive notifications on the most recent work packages that get completed. Once a work package is completed a notification is sent to admins, where they can see and then mark as read by clicking the ‘x’ next to the notification.

Each notification should appear one at a time and should slide in from the right of the screen when received, and slide out to the right of the screen after reading. 

Create a util function that will send a notification to all admins after a work package has been reviewed for stage gate.

Change the user model in the prisma schema to include an `unreadNotifications` field on the user model to keep track of the notifications that still need to be presented to the admin.

 

Acceptance Criteria:

  • [ ] Notifications appear for admins after a work package is marked as completed

  • [ ] util function is created to send notifications to admins

  • [ ] updated User model to include `unreadNotifications` field

Proposed Solution:

 

Schema Changes:

  • Add `unreadNotifications` to User model

Blockers:

 

Screenshots:

Notes:

 

Ticket #30: Receiving Slack Channel Announcements (SPIKE)

 

Description: 

We want to look into retrieving messages sent in team slack channels. Specifically, we want to access the messages that ping the channel (@channel), which will serve as our general announcements for the team.

We have not implemented something like this in Finishline, so this will require some research. Please document your findings with thorough comments and links to resources.

 

Goal:

We want our general announcements section on the homepage to be a useful resource.

 

Ticket #31: General Announcements Section (Member)

 

Description: 

On the member home page, we want to have a section where users can read any general announcements from their organization. This section will be a component in the member home page that consists of a page block filled with general announcement cards that users can x-out once they have read the announcement.

We need to make a general announcement card that consists of the user’s name who

sent out the announcement, the date the announcement was sent out, and the announcement itself.

To keep track of read announcements,  we need to update the User model to have an `unreadAnnouncements` field. This field wills store all of the announcements that need to be displayed in the general announcements section

 

Acceptance Criteria:

  • [ ] general announcements section is added to member homepage that displays all unread announcements

  • [ ] a general announcements card component is created

  • [ ] the user model is updated to include `unread announcements`

Proposed Solution:

 

Schema Changes:

 

Blockers:

 

Screenshots:

 

 

Notes: