<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cnayak</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Cnayak"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Cnayak"/>
	<updated>2026-08-08T20:36:17Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=164555</id>
		<title>CSC/ECE 517 Spring 2025 - E2539 Reimplement Student Task View (Frontend + Backend)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=164555"/>
		<updated>2025-04-22T05:20:54Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: /* Student Task Detail Screen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Expertiza ==&lt;br /&gt;
Expertiza is a robust, open-source web platform designed to empower educational environments that emphasize project-based learning. It streamlines collaborative activities—such as peer reviews, surveys, and team assignments—into an engaging, interactive experience that supports both teaching and learning.&lt;br /&gt;
&lt;br /&gt;
'''For Instructors/mentors:'''&lt;br /&gt;
Expertiza offers a comprehensive suite of tools to manage assignments, provide timely and constructive feedback, and track performance metrics. This enables educators to monitor student progress effectively and ensure optimal learning outcomes.&lt;br /&gt;
&lt;br /&gt;
'''For Students:'''&lt;br /&gt;
The platform is designed with learner engagement at its core. It allows students to actively participate in tasks, collaborate seamlessly with peers, and evaluate each other’s work. This approach not only promotes academic growth but also enhances critical thinking, problem-solving, and teamwork skills.&lt;br /&gt;
&lt;br /&gt;
Expertiza’s flexible architecture makes it ideal for a wide range of educational scenarios—from individual assignments to complex group projects and dynamic peer-review processes—ensuring an enriched, adaptive learning environment for all users.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The &amp;lt;b&amp;gt;E2539: Reimplement Student Task View&amp;lt;/b&amp;gt; project is focused on improving the Student Task View in the Expertiza application. The current interface is static, lacks responsiveness, and uses mocked data, limiting its effectiveness for real-world use.&lt;br /&gt;
&lt;br /&gt;
The project’s primary goal is to redesign this view using &amp;lt;b&amp;gt;React.js&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;TypeScript&amp;lt;/b&amp;gt; on the frontend and &amp;lt;b&amp;gt;Ruby on Rails&amp;lt;/b&amp;gt; on the backend. This new version will provide a modern, interactive experience where students can efficiently manage assignments, track progress, and access feedback in real-time.&lt;br /&gt;
&lt;br /&gt;
==== Tech Stack:====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Frontend:&amp;lt;/b&amp;gt; React.js, TypeScript&lt;br /&gt;
* &amp;lt;b&amp;gt;Backend:&amp;lt;/b&amp;gt; Ruby on Rails (API)&lt;br /&gt;
* &amp;lt;b&amp;gt;Database:&amp;lt;/b&amp;gt; MySQL&lt;br /&gt;
&lt;br /&gt;
==== Key Improvements: ====&lt;br /&gt;
&lt;br /&gt;
* Replace mocked data with live backend integration&lt;br /&gt;
* Create a responsive and accessible task list view&lt;br /&gt;
* Design and implement a detailed Student Task Details page&lt;br /&gt;
* Add a visual timeline for deadlines&lt;br /&gt;
* Improve usability through tooltips and modular components&lt;br /&gt;
&lt;br /&gt;
==✅ Final UI Displays ==&lt;br /&gt;
=== Login Account ===&lt;br /&gt;
* Username: niki&lt;br /&gt;
* Password: password&lt;br /&gt;
=== Student Tasks Screen ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:StudentTasks View Edited.jpg |1000px|center]]&lt;br /&gt;
&lt;br /&gt;
This screen presents a table view of all tasks assigned to the current student. Each row summarizes an individual task, including assignment name, current stage, and due dates. It provides a quick overview of progress across multiple assignments, with clickable links that navigate to the detailed task view (StudentTaskDetail). The layout is clean and responsive, allowing students to easily track their workload at a glance.&lt;br /&gt;
&lt;br /&gt;
=== Student Task Detail Screen ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:FinalUI1.PNG |1000px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This screen provides an in-depth view of a specific task selected from the task table. It includes detailed metadata such as assignment name, team, topic, and due dates, displayed in a responsive grid. A visual timeline tracks the student’s progress across stages like submission and review, using intuitive status indicators. This view helps students clearly understand their responsibilities and upcoming deadlines for each assignment.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The previous &amp;lt;b&amp;gt;Student Task View&amp;lt;/b&amp;gt; within the Expertiza application provides essential assignment details, deadlines, and progress tracking but falls short in delivering a responsive, user-friendly experience. The previous interface's limitations hinder students from efficiently managing their tasks, submitting assignments, and accessing feedback.&lt;br /&gt;
&lt;br /&gt;
This project aims to reimplement the Student Task View using React.js and TypeScript for the frontend. The goal is to transform the current view into a modern, interactive, and accessible platform that offers real-time updates and streamlined task management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Key challenges to address include: &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Backend Integration:''' Rebuild and connect the backend to support newly introduced functionalities, ensuring smooth data flow, accurate task state synchronization, and real-time responsiveness across the interface.&lt;br /&gt;
&lt;br /&gt;
*'''Consisstent UI with Tooltips:''' Enhance the StudentTasks table by incorporating a reusable Tooltip component on key columns (e.g., Review Grade), providing contextual guidance without overwhelming the interface.&lt;br /&gt;
&lt;br /&gt;
*'''Detailed Task View:''' Design and implement a dedicated Task Details screen that clearly displays essential information such as assignment name, due date, current stage, review status, and earned badges.&lt;br /&gt;
&lt;br /&gt;
*'''Interactive Task Management:''' Introduce interactive elements—including submission actions, revision request buttons, and feedback viewers—to make task progression intuitive and user-friendly.&lt;br /&gt;
&lt;br /&gt;
*'''Dynamic Timeline Visualization:''' Create a visual timeline that outlines all relevant deadlines, highlights the current date and time, and gives students an at-a-glance understanding of their progress and upcoming tasks.&lt;br /&gt;
&lt;br /&gt;
By implementing these improvements, the project aims to &amp;lt;b&amp;gt;significantly elevate the student experience&amp;lt;/b&amp;gt;, promote &amp;lt;b&amp;gt;greater engagement&amp;lt;/b&amp;gt;, and enable a &amp;lt;b&amp;gt;more efficient, intuitive workflow&amp;lt;/b&amp;gt; for managing academic assignments within Expertiza.&lt;br /&gt;
&lt;br /&gt;
== User Stories ==&lt;br /&gt;
=== Tasks Table and Navigation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; As a student,&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I want to view a list of all my assigned tasks and navigate to detailed information by clicking on a task,&lt;br /&gt;
&lt;br /&gt;
So that I can quickly find and manage tasks that need attention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Acceptance Criteria:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The Student Task screen displays a table listing all assigned tasks.&lt;br /&gt;
* Each row includes key summary info like assignment name, topic, and status.&lt;br /&gt;
* Clicking on the assignment name cell navigates to the task’s detail view.&lt;br /&gt;
&lt;br /&gt;
=== Task Details Display===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;As a student,&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I want to see detailed information about a specific task (e.g., assignment name, due date, current stage, review status, and badges),&lt;br /&gt;
&lt;br /&gt;
So that I can easily understand the progress and requirements for each task.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Acceptance Criteria:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The task view displays the assignment name, due date, current stage, review status, and any associated badges.&lt;br /&gt;
* Information is presented in a clear and easily readable format.&lt;br /&gt;
* All task details update dynamically when changes occur.&lt;br /&gt;
&lt;br /&gt;
=== Task Interaction===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;As a student,&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I want to interact with my tasks by submitting assignments, requesting revisions, and viewing feedback,&lt;br /&gt;
&lt;br /&gt;
So that I can efficiently manage my assignments and improve my work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Acceptance Criteria:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Buttons for managing team, submitting assignments, requesting revisions, and viewing feedback are visible and functional.&lt;br /&gt;
* Each button triggers the appropriate action (e.g., submission confirmation, revision request, viewing feedback).&lt;br /&gt;
* After submitting or requesting a revision, the task view updates accordingly.&lt;br /&gt;
&lt;br /&gt;
=== View Timeline ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;As a student,&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I want to see a visual representation of all task due dates in a timeline view,&lt;br /&gt;
&lt;br /&gt;
So that I can easily track important deadlines and manage my time effectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Acceptance Criteria:&amp;lt;/b&amp;gt;&lt;br /&gt;
* A visual timeline shows the due dates of all tasks.&lt;br /&gt;
* The timeline includes a dynamic indicator showing the present day and time.&lt;br /&gt;
* Tasks are visually represented in the timeline according to their respective due dates.&lt;br /&gt;
&lt;br /&gt;
=== Task Stage Navigation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;As a student,&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I want to view the different stages of a task,&lt;br /&gt;
&lt;br /&gt;
So that I can track my progress and see what steps are still pending.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Acceptance Criteria:&amp;lt;/b&amp;gt;&lt;br /&gt;
* The task view shows a visual representation of the different stages of the task (e.g., submission, review, feedback).&lt;br /&gt;
* Each stage is clearly labeled and the current stage is highlighted.&lt;br /&gt;
* The stages are navigable, allowing students to see what is coming next or what actions are needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Student Task Overview Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:StudentTask OverviewDiagram.jpg |1000px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This design diagram outlines the key components involved in the reimplementation of the Student Task View within the Expertiza application. The focus is on creating a responsive, modern, and interactive experience for students to manage their assignments effectively. Below is an overview of the system architecture:&lt;br /&gt;
&lt;br /&gt;
==== Full Stack Overview: ====&lt;br /&gt;
&amp;lt;b&amp;gt;1. Frontend Development&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Student Task View serves as the central interface for students to interact with their tasks. It provides:&lt;br /&gt;
* Displays task details, including assignment name, due date, current stage, review status, and badges.&lt;br /&gt;
* Includes interactive elements for submitting assignments, requesting revisions, and viewing feedback.&lt;br /&gt;
* Features a visual timeline for task due dates with a dynamic indicator for the current date and time.&lt;br /&gt;
* Provides task stage navigation to track progress.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Backend Development&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Manages the task data, user interactions, and real-time updates.&lt;br /&gt;
* Provides RESTful APIs that handle task-related queries and updates.&lt;br /&gt;
* Handles user authentication and ensures the task data is accessible and up-to-date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3. MySQL Database System&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Stores task details, user data, and timelines.&lt;br /&gt;
* Ensures data persistence and efficient querying for task-related information.&lt;br /&gt;
&lt;br /&gt;
==== Component Integration Flow: ====&lt;br /&gt;
* &amp;lt;b&amp;gt;Navigation Initiation:&amp;lt;/b&amp;gt;&lt;br /&gt;
** User clicks the “Assignments” tab in the navigation bar.&lt;br /&gt;
** 2. React Router updates the URL to /student_tasks.&lt;br /&gt;
** 3. StudentTasks component loads and displays the list of assignments.&lt;br /&gt;
** 4. User clicks on a specific assignment name from the table.&lt;br /&gt;
** 5. Router updates the URL to /student_tasks/:id, triggering navigation to the StudentTaskDetails view.&lt;br /&gt;
&lt;br /&gt;
*  &amp;lt;b&amp;gt;Data Loading &amp;amp; Component Communication&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sequenceDiagram&lt;br /&gt;
  participant StudentTasks&lt;br /&gt;
  participant API&lt;br /&gt;
  participant Database&lt;br /&gt;
  participant DOM&lt;br /&gt;
&lt;br /&gt;
  StudentTasks-&amp;gt;&amp;gt;API: GET /tasks&lt;br /&gt;
  API-&amp;gt;&amp;gt;Database: Query task list&lt;br /&gt;
  Database--&amp;gt;&amp;gt;API: Return task data&lt;br /&gt;
  API--&amp;gt;&amp;gt;StudentTasks: JSON response&lt;br /&gt;
  StudentTasks-&amp;gt;&amp;gt;DOM: Render timeline &amp;amp; metadata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram for Student Task Classes ===&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:STD ClassDiagram.jpg |800px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This &amp;lt;b&amp;gt;Classes Relationship&amp;lt;/b&amp;gt; is a summary of the previous team setup. It involves several models that manage the relationships between students, assignments, and teams. Each &amp;lt;b&amp;gt;Institution&amp;lt;/b&amp;gt; has many &amp;lt;b&amp;gt;Users&amp;lt;/b&amp;gt;, where users can be students or instructors. A &amp;lt;b&amp;gt;User&amp;lt;/b&amp;gt; (student) can have multiple &amp;lt;b&amp;gt;Participants&amp;lt;/b&amp;gt;, which represent the student’s involvement in various &amp;lt;b&amp;gt;Assignments&amp;lt;/b&amp;gt;. Each &amp;lt;b&amp;gt;Assignment&amp;lt;/b&amp;gt; belongs to a &amp;lt;b&amp;gt;Course&amp;lt;/b&amp;gt; and can have many &amp;lt;b&amp;gt;Participants&amp;lt;/b&amp;gt; assigned to it. A &amp;lt;b&amp;gt;Team&amp;lt;/b&amp;gt; is composed of multiple &amp;lt;b&amp;gt;TeamsUser&amp;lt;/b&amp;gt; records, with each TeamsUser linking a User (student) to a specific team for an assignment. The Participant model ties the student to a Team for an assignment, indicating that the student is part of that team. There is no dedicated &amp;lt;b&amp;gt;StudentTask&amp;lt;/b&amp;gt; table; instead, the &amp;lt;b&amp;gt;Assignment, Participant, and Team&amp;lt;/b&amp;gt; models handle the relationships between students, their tasks, and the teams they are part of.&lt;br /&gt;
&lt;br /&gt;
=== Student Task UI Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:StduentTaskView v2.jpg |800px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Student Task UI diagram visualizes how students interact with and manage their assignments within the Expertiza application. The diagram emphasizes the layout and functionalities available to students, focusing on clarity and usability. Here’s an explanation of each component:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1. Task Details Section:&amp;lt;/b&amp;gt;&lt;br /&gt;
* Displays essential information about a task, such as:&lt;br /&gt;
* Assignment Name: Clearly presented as the title of the task.&lt;br /&gt;
* Due Date: Shows when the task is due, helping students track deadlines.&lt;br /&gt;
* Current Stage: Displays the student’s current position in the task workflow (e.g., Submission, Review, Feedback).&lt;br /&gt;
* Review Status: Indicates whether the task has been reviewed or is pending.&lt;br /&gt;
* Badges: Any relevant achievement or status badges that show progress, completion, or special recognition.&lt;br /&gt;
&amp;lt;b&amp;gt;2. Task Interaction Buttons:&amp;lt;/b&amp;gt;&lt;br /&gt;
* Submit Assignment: A button that allows students to submit their work.&lt;br /&gt;
* Request Revision: Students can request revisions for assignments that are pending review or feedback.&lt;br /&gt;
* View Feedback: A button to view feedback from reviewers, which helps students improve their work.&lt;br /&gt;
&amp;lt;b&amp;gt;3. Timeline Section:&amp;lt;/b&amp;gt;&lt;br /&gt;
* Visual representation of all the task deadlines.&lt;br /&gt;
* Includes a dynamic indicator showing the present day and time, helping students track their current position relative to upcoming tasks.&lt;br /&gt;
* Each task’s due date is visually represented in a timeline, making it easier to manage multiple tasks.&lt;br /&gt;
&amp;lt;b&amp;gt;4. Task Stage Navigation:&amp;lt;/b&amp;gt;&lt;br /&gt;
* A step-by-step visual representation of the task stages (e.g., Submission, Review, Feedback).&lt;br /&gt;
* Each stage is clearly labeled, with the current stage highlighted.&lt;br /&gt;
* Students can navigate between stages to see their progress and identify which actions are needed next.&lt;br /&gt;
&lt;br /&gt;
== Improved Implementation of Backend ==&lt;br /&gt;
In the most recent version of the backend, the &amp;lt;b&amp;gt;StudentTask Controller&amp;lt;/b&amp;gt; was created by another team. Our role was to design an improvement plan for this controller, focusing on enhancing functionality, permissions, task retrieval, and testing processes. The controller follows RESTful principles and integrates seamlessly with the React frontend.&lt;br /&gt;
&lt;br /&gt;
=== Action Permissions ===&lt;br /&gt;
The action_allowed? method will ensure that only authorized users, such as students and specific roles, can interact with student tasks. It will authenticate the user, verify their role, and ensure they have the necessary permissions to access or modify student task data. Unauthorized access will be blocked with an appropriate error message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1. Purpose:&amp;lt;/b&amp;gt; Ensure secure access to task data through role-based authorization.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Key features:&amp;lt;/b&amp;gt; &lt;br /&gt;
* Blocks non-student users from write operations&lt;br /&gt;
* Verifies task ownership before showing details&lt;br /&gt;
* Complies with FERPA data privacy requirements&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Api::V1::StudentTasksController &amp;lt; ApplicationController&lt;br /&gt;
  before_action :authenticate_user!&lt;br /&gt;
  before_action :authorize_student!, except: [:list]&lt;br /&gt;
&lt;br /&gt;
  private&lt;br /&gt;
&lt;br /&gt;
  def authorize_student!&lt;br /&gt;
    return if current_user.student? &amp;amp;&amp;amp; owns_task?&lt;br /&gt;
    render json: { error: &amp;quot;Access denied&amp;quot; }, status: :forbidden&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def owns_task?&lt;br /&gt;
    @student_task.participant.user == current_user&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task Retrieval ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;List Action:&amp;lt;/b&amp;gt; This action will return all tasks assigned to the currently logged-in student, organized in a structured JSON format. It ensures students can view their tasks clearly and efficiently.&lt;br /&gt;
* Method: GET [Populate task list view]&lt;br /&gt;
&amp;lt;pre&amp;gt;/api/v1/student_tasks/list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comprehensive Testing with RSwag ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test Case&lt;br /&gt;
! Description / Input&lt;br /&gt;
! Expected Outcome&lt;br /&gt;
|-&lt;br /&gt;
| Student accesses their own task&lt;br /&gt;
| Authenticated student requests their assigned task&lt;br /&gt;
| 200 OK with task details&lt;br /&gt;
|-&lt;br /&gt;
| Student not participating in any assignment&lt;br /&gt;
| Authenticated student with no assignment attempts to access a task&lt;br /&gt;
| 404 Not Found&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tests will be created for each API endpoint, covering:&lt;br /&gt;
&lt;br /&gt;
* Successful Task Retrieval: Verifying that valid requests return the expected task data.&lt;br /&gt;
&lt;br /&gt;
* Error Scenarios: Ensuring that tasks are not retrieved if the task ID is invalid, if the user is unauthorized, or if the task does not exist.&lt;br /&gt;
&lt;br /&gt;
* Edge Cases: Handling scenarios like empty task lists, non-existent participant IDs, or invalid authentication tokens.&lt;br /&gt;
&lt;br /&gt;
These tests will be incorporated into the Continuous Integration pipeline to maintain robust error handling and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
=== Enhancement: Relevant File Details ===&lt;br /&gt;
==== Student_Task.rb: ====&lt;br /&gt;
* Added multiple new attributes via attr_accessor (course, review_grade, stage_deadline.) to enrich task data.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 attr_accessor :assignment, :course, :current_stage, :participant, :stage_deadline, :topic, :permission_granted, :deadlines, :review_grade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create_from_participant: Builds a StudentTask with relevant metadata extracted from the Participant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   # create a new StudentTask instance from a Participant object.&lt;br /&gt;
    def self.create_from_participant(participant)&lt;br /&gt;
      new(&lt;br /&gt;
        assignment: participant.assignment.name,                          # Name of the assignment associated with the student task&lt;br /&gt;
        course: participant.assignment.course.name,&lt;br /&gt;
        topic: participant.topic,                                         # Current stage of the assignment process&lt;br /&gt;
        current_stage: participant.current_stage,                         # Participant object&lt;br /&gt;
        stage_deadline: parse_stage_deadline(participant.stage_deadline), # Deadline for the current stage of the assignment&lt;br /&gt;
        permission_granted: participant.permission_granted,               # Topic of the assignment&lt;br /&gt;
        deadlines: sample_deadlines,&lt;br /&gt;
        review_grade: generate_review_grade(participant),&lt;br /&gt;
        participant: participant                                          # Boolean indicating if Publishing Rights is enabled&lt;br /&gt;
      )&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sample_deadlines: Provides mock deadline data for testing or placeholder UI use.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   # Generates a sample list of assignment deadlines relative to today's date.&lt;br /&gt;
    # This is likely used for testing or placeholder UI data.&lt;br /&gt;
    def self.sample_deadlines&lt;br /&gt;
      today = Date.today&lt;br /&gt;
      [&lt;br /&gt;
        { id: 1, date: (today - 15).to_s, description: &amp;quot;Submission deadline&amp;quot; },&lt;br /&gt;
        { id: 2, date: (today - 3).to_s, description: &amp;quot;Round 1 peer review&amp;quot; },&lt;br /&gt;
        { id: 2, date: (today - 3).to_s, description: &amp;quot;Round 2 peer review&amp;quot; },&lt;br /&gt;
        { id: 2, date: (today + 7).to_s, description: &amp;quot;Review deadline&amp;quot; },&lt;br /&gt;
      ]&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* generate_review_grade: Generates a simulated review score with randomized logic, used for demonstration or test purposes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    # Generates a simulated review grade for a participant.&lt;br /&gt;
    # This is likely placeholder logic for demonstration or testing purposes.&lt;br /&gt;
    def self.generate_review_grade(participant)&lt;br /&gt;
      # Randomly decide whether the participant has reviews or not&lt;br /&gt;
      if [true, false].sample&lt;br /&gt;
        reviews = rand(1..6)&lt;br /&gt;
        base_score_per_review = 10&lt;br /&gt;
        penalty_percent = [0, 10, 25, 50].sample&lt;br /&gt;
        raw_score = reviews * base_score_per_review&lt;br /&gt;
        final_score = (raw_score * (1 - penalty_percent / 100.0)).round&lt;br /&gt;
    &lt;br /&gt;
        &amp;quot;Score: #{final_score}/100 \n&amp;quot; \&lt;br /&gt;
        &amp;quot;Comment: #{reviews} reviews x #{base_score_per_review} pts/review x #{100 - penalty_percent}% = #{final_score} points \n&amp;quot; \&lt;br /&gt;
        &amp;quot;Explanation penalty (-#{penalty_percent}%)&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        &amp;quot;N/A&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Routes.rb: ====&lt;br /&gt;
* Reused routes for student_tasks, including custom actions list and view to support UI rendering of task listings and detail views.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      resources :student_tasks do&lt;br /&gt;
        collection do&lt;br /&gt;
          get :list, action: :list&lt;br /&gt;
          get :view&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Seeds.rb: ====&lt;br /&gt;
* Set up a sample student user (&amp;lt;b&amp;gt;niki&amp;lt;/b&amp;gt;) for testing.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Create first student with specific name &amp;quot;niki&amp;quot;&lt;br /&gt;
  student_user_ids &amp;lt;&amp;lt; User.create!(&lt;br /&gt;
    name: &amp;quot;niki&amp;quot;,&lt;br /&gt;
    email: &amp;quot;niki@example.com&amp;quot;,&lt;br /&gt;
    password: &amp;quot;password&amp;quot;,&lt;br /&gt;
    full_name: &amp;quot;Niki Jones&amp;quot;,&lt;br /&gt;
    institution_id: 1,&lt;br /&gt;
    role_id: 5&lt;br /&gt;
  ).id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Created a predefined list of assignment names.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Generate Specific Assignments names&lt;br /&gt;
  puts &amp;quot;Creating assignments with specific names&amp;quot;&lt;br /&gt;
  assignment_names = [&lt;br /&gt;
    &amp;quot;Program 1&amp;quot;,&lt;br /&gt;
    &amp;quot;Program 3&amp;quot;,&lt;br /&gt;
    &amp;quot;Program 4&amp;quot;,&lt;br /&gt;
    &amp;quot;Program 5&amp;quot;,&lt;br /&gt;
    &amp;quot;OSS Program 1&amp;quot;,&lt;br /&gt;
    &amp;quot;OSS Program 2&amp;quot;,&lt;br /&gt;
    &amp;quot;Program 6&amp;quot;,&lt;br /&gt;
    &amp;quot;Program 7&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Generated participants across all assignments for all students, with randomized stage data (current_stage, stage_deadline, topic) and team assignments to simulate realistic scenarios.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  puts &amp;quot;assigning participants to all students for all assignments&amp;quot;&lt;br /&gt;
  participant_ids = []&lt;br /&gt;
  # Array of possible stages&lt;br /&gt;
  stages = [&amp;quot;Not started&amp;quot;, &amp;quot;In progress&amp;quot;, &amp;quot;Submitted&amp;quot;, &amp;quot;Reviewed&amp;quot;, &amp;quot;Finished&amp;quot;]&lt;br /&gt;
  puts &amp;quot;Today is: #{Date.today + rand(1..10).days}&amp;quot;&lt;br /&gt;
  student_user_ids.each do |student_id|&lt;br /&gt;
    assignment_ids.each do |assignment_id|&lt;br /&gt;
      team_id = team_ids.sample # randomly assign a team for the assignment&lt;br /&gt;
      participant = Participant.create(&lt;br /&gt;
        user_id: student_id,&lt;br /&gt;
        stage_deadline: Date.today + rand(1..10).days,&lt;br /&gt;
        topic: &amp;quot;Topic #{rand(1..5)}&amp;quot;,&lt;br /&gt;
        permission_granted: true,&lt;br /&gt;
        current_stage: stages.sample,&lt;br /&gt;
        assignment_id:,&lt;br /&gt;
        team_id:&lt;br /&gt;
      )&lt;br /&gt;
      if participant.persisted?&lt;br /&gt;
        participant_ids &amp;lt;&amp;lt; participant.id&lt;br /&gt;
      else&lt;br /&gt;
        puts &amp;quot;Failed to create Participant: #{participant.errors.full_messages.join(', ')}&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reimplementation of Frontend ==&lt;br /&gt;
The new UI redesign replicates the functionality of the original page, now leveraging TypeScript for type safety and React for dynamic rendering. This approach enhances the user experience by providing a more responsive and accessible interface, while adhering to modern design principles.&lt;br /&gt;
&lt;br /&gt;
=== Data Fetching=== &lt;br /&gt;
The frontend communicates with the backend in real time, retrieving assignment details, deadlines, and review statuses dynamically to provide up-to-date task information.&lt;br /&gt;
&lt;br /&gt;
=== React Component Design === &lt;br /&gt;
The new design breaks down the UI into reusable React components, such as Header, Task Timeline, and TaskItem, to handle specific parts of the interface. This modular approach enhances code readability, maintainability, and reusability, promoting best practices in React development.&lt;br /&gt;
&lt;br /&gt;
=== Relevant File Details ===&lt;br /&gt;
==== StudentTaskDetail.tsx: ====&lt;br /&gt;
&amp;lt;b&amp;gt;1. Purpose:&amp;lt;/b&amp;gt; Displays comprehensive task details with interactive progress visualization.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Key Features:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a. Fetches task-specific data using URL params (useParams)&lt;br /&gt;
&lt;br /&gt;
b. Visual timeline with status indicators (completed/current/pending)&lt;br /&gt;
&lt;br /&gt;
c. Responsive grid layout for metadata display&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3. Code Snippet:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
import { useParams, Link, useLocation } from &amp;quot;react-router-dom&amp;quot;;&lt;br /&gt;
const StudentTaskDetail: React.FC = () =&amp;gt; {&lt;br /&gt;
  const { id } = useParams&amp;lt;{ id: string }&amp;gt;();&lt;br /&gt;
  // Get StudentDetails from Parent Component: StudentTasks.&lt;br /&gt;
  const StudentDetailsData = location.state;&lt;br /&gt;
&lt;br /&gt;
  const taskDetails = MockedStudentTaskDetails;&lt;br /&gt;
&lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className={styles.container}&amp;gt;&lt;br /&gt;
      {/* Add Heading */}&lt;br /&gt;
      ...&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
        {/* Add Interative Clickable Links List */}&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
        {/* Add Timeline + TimeStage  */}&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div&amp;gt; Footer &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;Link to=&amp;quot;/student_tasks&amp;quot; className=&amp;quot;back-link&amp;quot;&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/Link&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default StudentTaskDetail;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StudentTaskDetail.module.css ====&lt;br /&gt;
&amp;lt;b&amp;gt;1. Purpose:&amp;lt;/b&amp;gt; Provides scoped styling for detail view components.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Code Snippet:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* StudentTaskDetail.module.css */&lt;br /&gt;
.container {&lt;br /&gt;
  max-width: 1200px;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  padding: 20px;&lt;br /&gt;
  display: grid;&lt;br /&gt;
  gap: 25px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.header {&lt;br /&gt;
  text-align: left;&lt;br /&gt;
  padding: 20px 0;&lt;br /&gt;
  font-size: x-large;&lt;br /&gt;
  /* border-bottom: 2px solid #eee; */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StudentTasks.tsx: ====&lt;br /&gt;
&amp;lt;b&amp;gt;1. Purpose:&amp;lt;/b&amp;gt; Main view for assignment list with navigation links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Key Features:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a. Iterates through task data and renders individual cards for each task&lt;br /&gt;
&lt;br /&gt;
b. Allows navigation to detailed task view via clickable links&lt;br /&gt;
&lt;br /&gt;
c. Dynamically reflects current status or completion state&lt;br /&gt;
&lt;br /&gt;
d. Supports responsive design for different screen sizes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3. Code Snippet:&amp;lt;/b&amp;gt;&lt;br /&gt;
* Fetches task data from the backend (/student_tasks/list)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
 // State to hold tasks&lt;br /&gt;
  const [tasks, setTasks] = useState&amp;lt;Task[]&amp;gt;([]);&lt;br /&gt;
&lt;br /&gt;
  // Fetch student tasks from the backend when the component mounts&lt;br /&gt;
  useEffect(() =&amp;gt; {&lt;br /&gt;
    const fetchStudentTasks = async () =&amp;gt; {&lt;br /&gt;
      try {&lt;br /&gt;
        const response = await axiosClient.get(`/student_tasks/list`);&lt;br /&gt;
        setStudentTasksData(response.data);&lt;br /&gt;
      } catch (error) {&lt;br /&gt;
        console.error(&amp;quot;Error fetching student tasks:&amp;quot;, error);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    fetchStudentTasks();&lt;br /&gt;
  }, []);&lt;br /&gt;
&lt;br /&gt;
  // Parse and update tasks whenever studentTasksData changes&lt;br /&gt;
  useEffect(() =&amp;gt; {&lt;br /&gt;
    setTasks(parseStudentTasks(studentTasksData));&lt;br /&gt;
  }, [studentTasksData]);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Parses and structures raw task data into usable format&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  /**&lt;br /&gt;
   * Converts a raw list of student task data into a structured array of Task objects&lt;br /&gt;
   */&lt;br /&gt;
  function parseStudentTasks(rawList: any[]): Task[] {&lt;br /&gt;
    return rawList.map((item) =&amp;gt; {&lt;br /&gt;
      const participant = item.participant || {};&lt;br /&gt;
      const course = item.course || {};&lt;br /&gt;
      return {&lt;br /&gt;
        id: participant.id,&lt;br /&gt;
        assignment: item.assignment ?? &amp;quot;N/A&amp;quot;,&lt;br /&gt;
        course: course ?? &amp;quot;CSC 517&amp;quot;, // Not present in data, defaulting&lt;br /&gt;
        topic: participant.topic ?? &amp;quot;N/A&amp;quot;,&lt;br /&gt;
        currentStage: item.current_stage ?? participant.current_stage ?? &amp;quot;N/A&amp;quot;,&lt;br /&gt;
        reviewGrade: item.review_grade ?? &amp;quot;N/A&amp;quot;,&lt;br /&gt;
        badges: item.badges ?? false, // Adjust if you have badges logic elsewhere&lt;br /&gt;
        stageDeadline: item.stage_deadline ?? participant.stage_deadline ?? &amp;quot;&amp;quot;,&lt;br /&gt;
        publishingRights: participant.permission_granted ?? false,&lt;br /&gt;
        deadlines: item.deadlines, // Additional fields for StudentTaskDetails&lt;br /&gt;
      };&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Renders each task as a row with a clickable link  &lt;br /&gt;
* Supports responsive UI and navigation with react-router&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
      accessorKey: &amp;quot;assignment&amp;quot;,&lt;br /&gt;
      header: &amp;quot;Assignment&amp;quot;,&lt;br /&gt;
      cell: (info: CellContext&amp;lt;Task, string&amp;gt;) =&amp;gt; {&lt;br /&gt;
        const id = info.row.original.id;&lt;br /&gt;
        const matchedTask = tasks.find((task) =&amp;gt; task.id === id);&lt;br /&gt;
        return (&lt;br /&gt;
          &amp;lt;Link to={`/student_task_detail/${id}`} state={{ task: matchedTask }}&amp;gt;&lt;br /&gt;
            {info.getValue()}&lt;br /&gt;
          &amp;lt;/Link&amp;gt;&lt;br /&gt;
        );&lt;br /&gt;
      },&lt;br /&gt;
    },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== App.tsx ====&lt;br /&gt;
&amp;lt;b&amp;gt;1. Purpose:&amp;lt;/b&amp;gt; Manages navigation hierarchy and accessibility.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Key relative feature:&amp;lt;/b&amp;gt; Provides skip links and landmark regions between StudentTasks and StudentTaskDetail components.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3. Code Snippet:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Route path=&amp;quot;/student_tasks&amp;quot; element={&amp;lt;StudentTasks /&amp;gt;}&amp;gt;  &lt;br /&gt;
  &amp;lt;Route path=&amp;quot;:id&amp;quot; element={&amp;lt;StudentTaskDetail /&amp;gt;} /&amp;gt;  &lt;br /&gt;
&amp;lt;/Route&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Work ==&lt;br /&gt;
=== ToolTip.tsx ===&lt;br /&gt;
&lt;br /&gt;
As part of the UI refinement, we introduced a common Tooltip component to provide consistent, contextual information across the application. This component was specifically integrated into the StudentTasks table, replacing hardcoded or inline tooltips.&lt;br /&gt;
&lt;br /&gt;
By using this reusable Tooltip, we ensure:&lt;br /&gt;
* Consistent styling and behavior throughout the UI.&lt;br /&gt;
* Improved maintainability, allowing future updates in one place.&lt;br /&gt;
* Enhanced usability, giving students clear guidance on table headings and columns like review grade.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;StudentTasks.tsx&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
import ToolTip from &amp;quot;components/ToolTip&amp;quot;;&lt;br /&gt;
...&lt;br /&gt;
 cell: (info: CellContext&amp;lt;Task, Task[&amp;quot;reviewGrade&amp;quot;]&amp;gt;) =&amp;gt;&lt;br /&gt;
        info.getValue() === &amp;quot;N/A&amp;quot; ? (&lt;br /&gt;
          &amp;quot;NA&amp;quot;&lt;br /&gt;
        ) : (&lt;br /&gt;
          &amp;lt;ToolTip id=&amp;quot;info.row.original&amp;quot; info={info.row.original.reviewGrade || &amp;quot;&amp;quot;} /&amp;gt;&lt;br /&gt;
        ),&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Table.tsx&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
import ToolTip from &amp;quot;components/ToolTip&amp;quot;;&lt;br /&gt;
...&lt;br /&gt;
{comment &amp;amp;&amp;amp; &amp;lt;ToolTip id=&amp;quot;&amp;quot; info={comment} /&amp;gt;}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
In designing the Student Task View reimplementation, we adhere to key software design principles to ensure maintainability, scalability, and readability. The codebase follows the Single Responsibility Principle (SRP) by ensuring that each component and function has a well-defined purpose, reducing the likelihood of unintended changes. Separation of Concerns is maintained by structuring logic into modular components, making the system easier to debug and extend.&lt;br /&gt;
&lt;br /&gt;
==== Single Responsibility Principle (SRP) ==== &lt;br /&gt;
Each function and component in the frontend will focus on a specific aspect of task management, such as rendering assignment details, managing deadlines, or handling submission interactions.&lt;br /&gt;
&lt;br /&gt;
The backend will separate concerns by structuring controllers and services to isolate business logic from request handling.&lt;br /&gt;
&lt;br /&gt;
==== Don't Repeat Yourself (DRY) Principle ====&lt;br /&gt;
Common functionalities, such as fetching assignment details, checking deadlines, and managing user interactions, will be abstracted into reusable utility functions to reduce redundancy.&lt;br /&gt;
&lt;br /&gt;
Shared logic between different views (e.g., task details and submission interactions) will be extracted into reusable React components and backend services.&lt;br /&gt;
&lt;br /&gt;
==== Encapsulation &amp;amp; Modularity ==== &lt;br /&gt;
In the frontend, state management will be handled efficiently using React hooks and context, preventing unnecessary re-renders and ensuring data consistency.&lt;br /&gt;
&lt;br /&gt;
In the backend, controllers will delegate logic to service classes, limiting the exposure of business logic and maintaining a clear separation between data access and processing.&lt;br /&gt;
&lt;br /&gt;
==== Responsive &amp;amp; Accessible Design ====&lt;br /&gt;
The UI will follow responsive design principles, ensuring that the Student Task View adapts to different screen sizes and devices.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Test Plan for Student Task View Reimplementation&lt;br /&gt;
! Test ID&lt;br /&gt;
! Test Case&lt;br /&gt;
! Description&lt;br /&gt;
! Test Steps&lt;br /&gt;
! Expected Results&lt;br /&gt;
! Priority&lt;br /&gt;
! Status&lt;br /&gt;
|-&lt;br /&gt;
| TC1&lt;br /&gt;
| Verify Task Details Display&lt;br /&gt;
| Verify that task details (assignment name, due date, current stage, review status, and badges) are displayed correctly.&lt;br /&gt;
| 1. Open task view.&amp;lt;br&amp;gt;2. Check if the assignment name, due date, current stage, review status, and badges are displayed.&lt;br /&gt;
| The task view should display the assignment name, due date, current stage, review status, and associated badges in a clear, readable format.&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC2&lt;br /&gt;
| Verify Dynamic Updates for Task Details&lt;br /&gt;
| Verify that task details update dynamically when changes occur.&lt;br /&gt;
| 1. Change task details in the backend.&amp;lt;br&amp;gt;2. Refresh task view.&lt;br /&gt;
| Task details should update automatically without manual refresh and display the latest data.&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC3&lt;br /&gt;
| Verify Task Interaction Buttons&lt;br /&gt;
| Verify that buttons for task actions (submit, revise, view feedback) are visible and functional.&lt;br /&gt;
| 1. Open task view.&amp;lt;br&amp;gt;2. Check visibility of buttons (submit, revise, feedback).&amp;lt;br&amp;gt;3. Click each button and observe the action.&lt;br /&gt;
| Buttons are visible, clickable, and trigger the correct action (e.g., submitting, requesting revision, viewing feedback).&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC4&lt;br /&gt;
| Verify Task View Updates After Task Interaction&lt;br /&gt;
| Verify that the task view updates after submitting or requesting a revision.&lt;br /&gt;
| 1. Submit a task.&amp;lt;br&amp;gt;2. Check if the task view updates to reflect the submission status.&lt;br /&gt;
| After interaction, task view updates appropriately (e.g., shows &amp;quot;submitted&amp;quot; status after submission).&lt;br /&gt;
| Medium&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC5&lt;br /&gt;
| Verify Timeline Shows Task Due Dates&lt;br /&gt;
| Verify that the timeline displays task due dates correctly.&lt;br /&gt;
| 1. Open task timeline view.&amp;lt;br&amp;gt;2. Check that all task due dates are visually displayed on the timeline.&lt;br /&gt;
| The timeline should show the correct due dates for all tasks.&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC6&lt;br /&gt;
| Verify Dynamic Present Day Indicator on Timeline&lt;br /&gt;
| Verify that the timeline includes a dynamic indicator showing the present day and time.&lt;br /&gt;
| 1. Open task timeline view.&amp;lt;br&amp;gt;2. Check for a dynamic indicator showing the present day and time.&lt;br /&gt;
| A dynamic indicator should reflect the current day and time on the timeline.&lt;br /&gt;
| Medium&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC7&lt;br /&gt;
| Verify Tasks Are Represented on the Timeline&lt;br /&gt;
| Verify that tasks are visually represented on the timeline according to their due dates.&lt;br /&gt;
| 1. Open task timeline view.&amp;lt;br&amp;gt;2. Check that tasks are placed according to their respective due dates on the timeline.&lt;br /&gt;
| Tasks are visually represented and placed on the timeline based on their respective due dates.&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC8&lt;br /&gt;
| Verify Task Stages Display Correctly&lt;br /&gt;
| Verify that the task stages (e.g., submission, review, feedback) are displayed correctly.&lt;br /&gt;
| 1. Open task view.&amp;lt;br&amp;gt;2. Check if the task stages (submission, review, feedback) are displayed.&lt;br /&gt;
| Task stages should be clearly displayed with appropriate labels (e.g., &amp;quot;Submission&amp;quot;, &amp;quot;Review&amp;quot;, &amp;quot;Feedback&amp;quot;).&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC9&lt;br /&gt;
| Verify Current Stage Is Highlighted&lt;br /&gt;
| Verify that the current stage is visually highlighted.&lt;br /&gt;
| 1. Open task view.&amp;lt;br&amp;gt;2. Check if the current stage is visually highlighted.&lt;br /&gt;
| The current stage should be visually highlighted (e.g., different color or bold text).&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC10&lt;br /&gt;
| Verify Task Stages Are Navigable&lt;br /&gt;
| Verify that the task stages are navigable, allowing students to track progress.&lt;br /&gt;
| 1. Open task view.&amp;lt;br&amp;gt;2. Click on different stages to navigate through them.&lt;br /&gt;
| Students can navigate through stages and see details for each stage.&lt;br /&gt;
| Medium&lt;br /&gt;
| Passed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
===Pull Requests===&lt;br /&gt;
&lt;br /&gt;
* Backend&lt;br /&gt;
&lt;br /&gt;
* Frontend&lt;br /&gt;
&lt;br /&gt;
===Repos===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/Jing27540/reimplementation-back-end Backend Repo]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/Jing27540/reimplementation-front-end Frontend Repo]&lt;br /&gt;
&lt;br /&gt;
== Developer Guidance ==&lt;br /&gt;
&lt;br /&gt;
=== Backend ===&lt;br /&gt;
&lt;br /&gt;
==== Setup &amp;amp; Run (via Docker)====&lt;br /&gt;
Run the following commands from your project root to start the backend environment using Docker:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker-compose down            # Stops and removes containers, networks, and volumes&lt;br /&gt;
docker-compose build --no-cache  # Rebuilds images from scratch without cache&lt;br /&gt;
docker-compose up              # Starts the app with fresh containers&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Within the container ====&lt;br /&gt;
After starting the containers, access the Rails backend container and run the necessary setup commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker-compose exec web bash     # Open a terminal session inside the backend container&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Once inside the container, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bundle install                 # Installs necessary gems&lt;br /&gt;
rake db:migrate:reset         # Drops, creates, and runs migrations from scratch&lt;br /&gt;
rake db:seed                  # Seeds initial test/development data&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Frontend ===&lt;br /&gt;
&lt;br /&gt;
==== Frontend Setup &amp;amp; Run====&lt;br /&gt;
For setting up and running the frontend, use the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install          # Installs necessary Node.js packages&lt;br /&gt;
npm start            # Starts the frontend application on your local server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
With the &amp;lt;b&amp;gt;Student Task(Details) View&amp;lt;/b&amp;gt; now redesigned—integrating backend models like Assignment, Participant, and Team into a responsive React UI—there are several impactful directions to further enhance Expertiza:&lt;br /&gt;
&lt;br /&gt;
==== Dedicated StudentTask Abstraction ====&lt;br /&gt;
&lt;br /&gt;
Although a &amp;lt;b&amp;gt;StudentTask model&amp;lt;/b&amp;gt; exists in the codebase, it currently lacks a backing database table. Creating a dedicated &amp;lt;b&amp;gt;StudentTask table&amp;lt;/b&amp;gt; would centralize key data—such as status, deadlines, progress, and feedback—for each student-task instance. This enhancement would:&lt;br /&gt;
* Simplify frontend API consumption&lt;br /&gt;
* Improve task-level granularity&lt;br /&gt;
* Enable easier audit logging and analytics tracking per student-task instance&lt;br /&gt;
&lt;br /&gt;
==== AI-Driven Smart Feedback Integration ====&lt;br /&gt;
&lt;br /&gt;
Leverage NLP models to provide students with &amp;lt;b&amp;gt;automated writing feedback&amp;lt;/b&amp;gt;, peer review summaries, or rubric suggestions. This would be especially useful after assignment submission, augmenting instructor or peer feedback.&lt;br /&gt;
&lt;br /&gt;
==== Customizable Task Workflow Engine ====&lt;br /&gt;
&lt;br /&gt;
Convert the current static stage indicators into a flexible workflow engine. &amp;lt;b&amp;gt;Instructors&amp;lt;/b&amp;gt; could define custom task flows like “Draft → Peer Review → Instructor Review → Publish.” Key benefits include:&lt;br /&gt;
* Greater flexibility across disciplines&lt;br /&gt;
* Reusability for assignments with unique workflows&lt;br /&gt;
* Dynamic visual rendering of new workflows in the timeline view&lt;br /&gt;
&lt;br /&gt;
== Mentor == &lt;br /&gt;
* &amp;lt;b&amp;gt;Anvitha Reddy Gutha&amp;lt;/b&amp;gt; &amp;lt;agutha@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Members == &lt;br /&gt;
* &amp;lt;b&amp;gt;Chinmay Nayak&amp;lt;/b&amp;gt; &amp;lt;cnayak@ncsu.edu&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;Joannes Koomson&amp;lt;/b&amp;gt; &amp;lt;jokoomso@ncsu.edu&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;Jing Huang&amp;lt;/b&amp;gt; &amp;lt;jhuang42@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalUI1.PNG&amp;diff=164554</id>
		<title>File:FinalUI1.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:FinalUI1.PNG&amp;diff=164554"/>
		<updated>2025-04-22T05:20:24Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: final ui of final project.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
final ui of final project.&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Capture.PNG&amp;diff=164553</id>
		<title>File:Capture.PNG</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Capture.PNG&amp;diff=164553"/>
		<updated>2025-04-22T05:18:36Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: Cnayak uploaded a new version of File:Capture.PNG&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=164431</id>
		<title>CSC/ECE 517 Spring 2025 - E2539 Reimplement Student Task View (Frontend + Backend)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=164431"/>
		<updated>2025-04-22T00:24:11Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: /* Additional Wrok */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Expertiza ==&lt;br /&gt;
Expertiza is a robust, open-source web platform designed to empower educational environments that emphasize project-based learning. It streamlines collaborative activities—such as peer reviews, surveys, and team assignments—into an engaging, interactive experience that supports both teaching and learning.&lt;br /&gt;
&lt;br /&gt;
'''For Instructors/mentors:'''&lt;br /&gt;
Expertiza offers a comprehensive suite of tools to manage assignments, provide timely and constructive feedback, and track performance metrics. This enables educators to monitor student progress effectively and ensure optimal learning outcomes.&lt;br /&gt;
&lt;br /&gt;
'''For Students:'''&lt;br /&gt;
The platform is designed with learner engagement at its core. It allows students to actively participate in tasks, collaborate seamlessly with peers, and evaluate each other’s work. This approach not only promotes academic growth but also enhances critical thinking, problem-solving, and teamwork skills.&lt;br /&gt;
&lt;br /&gt;
Expertiza’s flexible architecture makes it ideal for a wide range of educational scenarios—from individual assignments to complex group projects and dynamic peer-review processes—ensuring an enriched, adaptive learning environment for all users.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The &amp;lt;b&amp;gt;E2539: Reimplement Student Task View&amp;lt;/b&amp;gt; project is focused on improving the Student Task View in the Expertiza application. The current interface is static, lacks responsiveness, and uses mocked data, limiting its effectiveness for real-world use.&lt;br /&gt;
&lt;br /&gt;
The project’s primary goal is to redesign this view using &amp;lt;b&amp;gt;React.js&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;TypeScript&amp;lt;/b&amp;gt; on the frontend and &amp;lt;b&amp;gt;Ruby on Rails&amp;lt;/b&amp;gt; on the backend. This new version will provide a modern, interactive experience where students can efficiently manage assignments, track progress, and access feedback in real-time.&lt;br /&gt;
&lt;br /&gt;
==== Tech Stack:====&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Frontend:&amp;lt;/b&amp;gt; React.js, TypeScript&lt;br /&gt;
* &amp;lt;b&amp;gt;Backend:&amp;lt;/b&amp;gt; Ruby on Rails (API)&lt;br /&gt;
* &amp;lt;b&amp;gt;Database:&amp;lt;/b&amp;gt; MySQL&lt;br /&gt;
&lt;br /&gt;
==== Key Improvements: ====&lt;br /&gt;
&lt;br /&gt;
* Replace mocked data with live backend integration&lt;br /&gt;
* Create a responsive and accessible task list view&lt;br /&gt;
* Design and implement a detailed Student Task Details page&lt;br /&gt;
* Add a visual timeline for deadlines&lt;br /&gt;
* Improve usability through tooltips and modular components&lt;br /&gt;
&lt;br /&gt;
==✅ Final UI Displays ==&lt;br /&gt;
=== Login Account ===&lt;br /&gt;
* Username: niki&lt;br /&gt;
* Password: password&lt;br /&gt;
=== Student Tasks Screen ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:StudentTasks View Edited.jpg |1000px|center]]&lt;br /&gt;
&lt;br /&gt;
This screen presents a table view of all tasks assigned to the current student. Each row summarizes an individual task, including assignment name, current stage, and due dates. It provides a quick overview of progress across multiple assignments, with clickable links that navigate to the detailed task view (StudentTaskDetail). The layout is clean and responsive, allowing students to easily track their workload at a glance.&lt;br /&gt;
&lt;br /&gt;
=== Student Task Detail Screen ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Final STD UI.jpg |1000px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This screen provides an in-depth view of a specific task selected from the task table. It includes detailed metadata such as assignment name, team, topic, and due dates, displayed in a responsive grid. A visual timeline tracks the student’s progress across stages like submission and review, using intuitive status indicators. This view helps students clearly understand their responsibilities and upcoming deadlines for each assignment.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The previous &amp;lt;b&amp;gt;Student Task View&amp;lt;/b&amp;gt; within the Expertiza application provides essential assignment details, deadlines, and progress tracking but falls short in delivering a responsive, user-friendly experience. The previous interface's limitations hinder students from efficiently managing their tasks, submitting assignments, and accessing feedback.&lt;br /&gt;
&lt;br /&gt;
This project aims to reimplement the Student Task View using React.js and TypeScript for the frontend. The goal is to transform the current view into a modern, interactive, and accessible platform that offers real-time updates and streamlined task management.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Key challenges to address include: &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Backend Integration:''' Rebuild and connect the backend to support newly introduced functionalities, ensuring smooth data flow, accurate task state synchronization, and real-time responsiveness across the interface.&lt;br /&gt;
&lt;br /&gt;
*'''Consisstent UI with Tooltips:''' Enhance the StudentTasks table by incorporating a reusable Tooltip component on key columns (e.g., Review Grade), providing contextual guidance without overwhelming the interface.&lt;br /&gt;
&lt;br /&gt;
*'''Detailed Task View:''' Design and implement a dedicated Task Details screen that clearly displays essential information such as assignment name, due date, current stage, review status, and earned badges.&lt;br /&gt;
&lt;br /&gt;
*'''Interactive Task Management:''' Introduce interactive elements—including submission actions, revision request buttons, and feedback viewers—to make task progression intuitive and user-friendly.&lt;br /&gt;
&lt;br /&gt;
*'''Dynamic Timeline Visualization:''' Create a visual timeline that outlines all relevant deadlines, highlights the current date and time, and gives students an at-a-glance understanding of their progress and upcoming tasks.&lt;br /&gt;
&lt;br /&gt;
By implementing these improvements, the project aims to &amp;lt;b&amp;gt;significantly elevate the student experience&amp;lt;/b&amp;gt;, promote &amp;lt;b&amp;gt;greater engagement&amp;lt;/b&amp;gt;, and enable a &amp;lt;b&amp;gt;more efficient, intuitive workflow&amp;lt;/b&amp;gt; for managing academic assignments within Expertiza.&lt;br /&gt;
&lt;br /&gt;
== User Stories ==&lt;br /&gt;
=== Tasks Table and Navigation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; As a student,&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I want to view a list of all my assigned tasks and navigate to detailed information by clicking on a task,&lt;br /&gt;
&lt;br /&gt;
So that I can quickly find and manage tasks that need attention.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Acceptance Criteria:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The Student Task screen displays a table listing all assigned tasks.&lt;br /&gt;
* Each row includes key summary info like assignment name, topic, and status.&lt;br /&gt;
* Clicking on the assignment name cell navigates to the task’s detail view.&lt;br /&gt;
&lt;br /&gt;
=== Task Details Display===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;As a student,&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I want to see detailed information about a specific task (e.g., assignment name, due date, current stage, review status, and badges),&lt;br /&gt;
&lt;br /&gt;
So that I can easily understand the progress and requirements for each task.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Acceptance Criteria:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The task view displays the assignment name, due date, current stage, review status, and any associated badges.&lt;br /&gt;
* Information is presented in a clear and easily readable format.&lt;br /&gt;
* All task details update dynamically when changes occur.&lt;br /&gt;
&lt;br /&gt;
=== Task Interaction===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;As a student,&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I want to interact with my tasks by submitting assignments, requesting revisions, and viewing feedback,&lt;br /&gt;
&lt;br /&gt;
So that I can efficiently manage my assignments and improve my work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Acceptance Criteria:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Buttons for managing team, submitting assignments, requesting revisions, and viewing feedback are visible and functional.&lt;br /&gt;
* Each button triggers the appropriate action (e.g., submission confirmation, revision request, viewing feedback).&lt;br /&gt;
* After submitting or requesting a revision, the task view updates accordingly.&lt;br /&gt;
&lt;br /&gt;
=== View Timeline ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;As a student,&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I want to see a visual representation of all task due dates in a timeline view,&lt;br /&gt;
&lt;br /&gt;
So that I can easily track important deadlines and manage my time effectively.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Acceptance Criteria:&amp;lt;/b&amp;gt;&lt;br /&gt;
* A visual timeline shows the due dates of all tasks.&lt;br /&gt;
* The timeline includes a dynamic indicator showing the present day and time.&lt;br /&gt;
* Tasks are visually represented in the timeline according to their respective due dates.&lt;br /&gt;
&lt;br /&gt;
=== Task Stage Navigation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;As a student,&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I want to view the different stages of a task,&lt;br /&gt;
&lt;br /&gt;
So that I can track my progress and see what steps are still pending.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Acceptance Criteria:&amp;lt;/b&amp;gt;&lt;br /&gt;
* The task view shows a visual representation of the different stages of the task (e.g., submission, review, feedback).&lt;br /&gt;
* Each stage is clearly labeled and the current stage is highlighted.&lt;br /&gt;
* The stages are navigable, allowing students to see what is coming next or what actions are needed.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Student Task Overview Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:ST Design Overview.jpg |1000px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This design diagram outlines the key components involved in the reimplementation of the Student Task View within the Expertiza application. The focus is on creating a responsive, modern, and interactive experience for students to manage their assignments effectively. Below is an overview of the system architecture:&lt;br /&gt;
&lt;br /&gt;
==== Full Stack Overview: ====&lt;br /&gt;
&amp;lt;b&amp;gt;1. Frontend Development&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Student Task View serves as the central interface for students to interact with their tasks. It provides:&lt;br /&gt;
* Displays task details, including assignment name, due date, current stage, review status, and badges.&lt;br /&gt;
* Includes interactive elements for submitting assignments, requesting revisions, and viewing feedback.&lt;br /&gt;
* Features a visual timeline for task due dates with a dynamic indicator for the current date and time.&lt;br /&gt;
* Provides task stage navigation to track progress.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Backend Development&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Manages the task data, user interactions, and real-time updates.&lt;br /&gt;
* Provides RESTful APIs that handle task-related queries and updates.&lt;br /&gt;
* Handles user authentication and ensures the task data is accessible and up-to-date.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3. MySQL Database System&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Stores task details, user data, and timelines.&lt;br /&gt;
* Ensures data persistence and efficient querying for task-related information.&lt;br /&gt;
&lt;br /&gt;
==== Component Integration Flow: ====&lt;br /&gt;
* &amp;lt;b&amp;gt;Navigation Initiation:&amp;lt;/b&amp;gt;&lt;br /&gt;
** User clicks the “Assignments” tab in the navigation bar.&lt;br /&gt;
** 2. React Router updates the URL to /student_tasks.&lt;br /&gt;
** 3. StudentTasks component loads and displays the list of assignments.&lt;br /&gt;
** 4. User clicks on a specific assignment name from the table.&lt;br /&gt;
** 5. Router updates the URL to /student_tasks/:id, triggering navigation to the StudentTaskDetails view.&lt;br /&gt;
&lt;br /&gt;
*  &amp;lt;b&amp;gt;Data Loading &amp;amp; Component Communication&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sequenceDiagram&lt;br /&gt;
  participant StudentTasks&lt;br /&gt;
  participant API&lt;br /&gt;
  participant Database&lt;br /&gt;
  participant DOM&lt;br /&gt;
&lt;br /&gt;
  StudentTasks-&amp;gt;&amp;gt;API: GET /tasks&lt;br /&gt;
  API-&amp;gt;&amp;gt;Database: Query task list&lt;br /&gt;
  Database--&amp;gt;&amp;gt;API: Return task data&lt;br /&gt;
  API--&amp;gt;&amp;gt;StudentTasks: JSON response&lt;br /&gt;
  StudentTasks-&amp;gt;&amp;gt;DOM: Render timeline &amp;amp; metadata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== UML Diagram for Student Task Classes ===&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:STD ClassDiagram.jpg |800px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This &amp;lt;b&amp;gt;Classes Relationship&amp;lt;/b&amp;gt; is a summary of the previous team setup. It involves several models that manage the relationships between students, assignments, and teams. Each &amp;lt;b&amp;gt;Institution&amp;lt;/b&amp;gt; has many &amp;lt;b&amp;gt;Users&amp;lt;/b&amp;gt;, where users can be students or instructors. A &amp;lt;b&amp;gt;User&amp;lt;/b&amp;gt; (student) can have multiple &amp;lt;b&amp;gt;Participants&amp;lt;/b&amp;gt;, which represent the student’s involvement in various &amp;lt;b&amp;gt;Assignments&amp;lt;/b&amp;gt;. Each &amp;lt;b&amp;gt;Assignment&amp;lt;/b&amp;gt; belongs to a &amp;lt;b&amp;gt;Course&amp;lt;/b&amp;gt; and can have many &amp;lt;b&amp;gt;Participants&amp;lt;/b&amp;gt; assigned to it. A &amp;lt;b&amp;gt;Team&amp;lt;/b&amp;gt; is composed of multiple &amp;lt;b&amp;gt;TeamsUser&amp;lt;/b&amp;gt; records, with each TeamsUser linking a User (student) to a specific team for an assignment. The Participant model ties the student to a Team for an assignment, indicating that the student is part of that team. There is no dedicated &amp;lt;b&amp;gt;StudentTask&amp;lt;/b&amp;gt; table; instead, the &amp;lt;b&amp;gt;Assignment, Participant, and Team&amp;lt;/b&amp;gt; models handle the relationships between students, their tasks, and the teams they are part of.&lt;br /&gt;
&lt;br /&gt;
=== Student Task UI Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:StduentTaskView v2.jpg |800px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Student Task UI diagram visualizes how students interact with and manage their assignments within the Expertiza application. The diagram emphasizes the layout and functionalities available to students, focusing on clarity and usability. Here’s an explanation of each component:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1. Task Details Section:&amp;lt;/b&amp;gt;&lt;br /&gt;
* Displays essential information about a task, such as:&lt;br /&gt;
* Assignment Name: Clearly presented as the title of the task.&lt;br /&gt;
* Due Date: Shows when the task is due, helping students track deadlines.&lt;br /&gt;
* Current Stage: Displays the student’s current position in the task workflow (e.g., Submission, Review, Feedback).&lt;br /&gt;
* Review Status: Indicates whether the task has been reviewed or is pending.&lt;br /&gt;
* Badges: Any relevant achievement or status badges that show progress, completion, or special recognition.&lt;br /&gt;
&amp;lt;b&amp;gt;2. Task Interaction Buttons:&amp;lt;/b&amp;gt;&lt;br /&gt;
* Submit Assignment: A button that allows students to submit their work.&lt;br /&gt;
* Request Revision: Students can request revisions for assignments that are pending review or feedback.&lt;br /&gt;
* View Feedback: A button to view feedback from reviewers, which helps students improve their work.&lt;br /&gt;
&amp;lt;b&amp;gt;3. Timeline Section:&amp;lt;/b&amp;gt;&lt;br /&gt;
* Visual representation of all the task deadlines.&lt;br /&gt;
* Includes a dynamic indicator showing the present day and time, helping students track their current position relative to upcoming tasks.&lt;br /&gt;
* Each task’s due date is visually represented in a timeline, making it easier to manage multiple tasks.&lt;br /&gt;
&amp;lt;b&amp;gt;4. Task Stage Navigation:&amp;lt;/b&amp;gt;&lt;br /&gt;
* A step-by-step visual representation of the task stages (e.g., Submission, Review, Feedback).&lt;br /&gt;
* Each stage is clearly labeled, with the current stage highlighted.&lt;br /&gt;
* Students can navigate between stages to see their progress and identify which actions are needed next.&lt;br /&gt;
&lt;br /&gt;
== Improved Implementation of Backend ==&lt;br /&gt;
In the most recent version of the backend, the &amp;lt;b&amp;gt;StudentTask Controller&amp;lt;/b&amp;gt; was created by another team. Our role was to design an improvement plan for this controller, focusing on enhancing functionality, permissions, task retrieval, and testing processes. The controller follows RESTful principles and integrates seamlessly with the React frontend.&lt;br /&gt;
&lt;br /&gt;
=== Action Permissions ===&lt;br /&gt;
The action_allowed? method will ensure that only authorized users, such as students and specific roles, can interact with student tasks. It will authenticate the user, verify their role, and ensure they have the necessary permissions to access or modify student task data. Unauthorized access will be blocked with an appropriate error message.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1. Purpose:&amp;lt;/b&amp;gt; Ensure secure access to task data through role-based authorization.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Key features:&amp;lt;/b&amp;gt; &lt;br /&gt;
* Blocks non-student users from write operations&lt;br /&gt;
* Verifies task ownership before showing details&lt;br /&gt;
* Complies with FERPA data privacy requirements&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
class Api::V1::StudentTasksController &amp;lt; ApplicationController&lt;br /&gt;
  before_action :authenticate_user!&lt;br /&gt;
  before_action :authorize_student!, except: [:list]&lt;br /&gt;
&lt;br /&gt;
  private&lt;br /&gt;
&lt;br /&gt;
  def authorize_student!&lt;br /&gt;
    return if current_user.student? &amp;amp;&amp;amp; owns_task?&lt;br /&gt;
    render json: { error: &amp;quot;Access denied&amp;quot; }, status: :forbidden&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
  def owns_task?&lt;br /&gt;
    @student_task.participant.user == current_user&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Task Retrieval ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;List Action:&amp;lt;/b&amp;gt; This action will return all tasks assigned to the currently logged-in student, organized in a structured JSON format. It ensures students can view their tasks clearly and efficiently.&lt;br /&gt;
* Method: GET [Populate task list view]&lt;br /&gt;
&amp;lt;pre&amp;gt;/api/v1/student_tasks/list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Comprehensive Testing with RSwag ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test Case&lt;br /&gt;
! Description / Input&lt;br /&gt;
! Expected Outcome&lt;br /&gt;
|-&lt;br /&gt;
| Student accesses their own task&lt;br /&gt;
| Authenticated student requests their assigned task&lt;br /&gt;
| 200 OK with task details&lt;br /&gt;
|-&lt;br /&gt;
| Student not participating in any assignment&lt;br /&gt;
| Authenticated student with no assignment attempts to access a task&lt;br /&gt;
| 404 Not Found&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Tests will be created for each API endpoint, covering:&lt;br /&gt;
&lt;br /&gt;
* Successful Task Retrieval: Verifying that valid requests return the expected task data.&lt;br /&gt;
&lt;br /&gt;
* Error Scenarios: Ensuring that tasks are not retrieved if the task ID is invalid, if the user is unauthorized, or if the task does not exist.&lt;br /&gt;
&lt;br /&gt;
* Edge Cases: Handling scenarios like empty task lists, non-existent participant IDs, or invalid authentication tokens.&lt;br /&gt;
&lt;br /&gt;
These tests will be incorporated into the Continuous Integration pipeline to maintain robust error handling and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
=== Enhancement: Relevant File Details ===&lt;br /&gt;
==== Student_Task.rb: ====&lt;br /&gt;
* Added multiple new attributes via attr_accessor (course, review_grade, stage_deadline.) to enrich task data.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 attr_accessor :assignment, :course, :current_stage, :participant, :stage_deadline, :topic, :permission_granted, :deadlines, :review_grade&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* create_from_participant: Builds a StudentTask with relevant metadata extracted from the Participant.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   # create a new StudentTask instance from a Participant object.&lt;br /&gt;
    def self.create_from_participant(participant)&lt;br /&gt;
      new(&lt;br /&gt;
        assignment: participant.assignment.name,                          # Name of the assignment associated with the student task&lt;br /&gt;
        course: participant.assignment.course.name,&lt;br /&gt;
        topic: participant.topic,                                         # Current stage of the assignment process&lt;br /&gt;
        current_stage: participant.current_stage,                         # Participant object&lt;br /&gt;
        stage_deadline: parse_stage_deadline(participant.stage_deadline), # Deadline for the current stage of the assignment&lt;br /&gt;
        permission_granted: participant.permission_granted,               # Topic of the assignment&lt;br /&gt;
        deadlines: sample_deadlines,&lt;br /&gt;
        review_grade: generate_review_grade(participant),&lt;br /&gt;
        participant: participant                                          # Boolean indicating if Publishing Rights is enabled&lt;br /&gt;
      )&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* sample_deadlines: Provides mock deadline data for testing or placeholder UI use.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   # Generates a sample list of assignment deadlines relative to today's date.&lt;br /&gt;
    # This is likely used for testing or placeholder UI data.&lt;br /&gt;
    def self.sample_deadlines&lt;br /&gt;
      today = Date.today&lt;br /&gt;
      [&lt;br /&gt;
        { id: 1, date: (today - 15).to_s, description: &amp;quot;Submission deadline&amp;quot; },&lt;br /&gt;
        { id: 2, date: (today - 3).to_s, description: &amp;quot;Round 1 peer review&amp;quot; },&lt;br /&gt;
        { id: 2, date: (today - 3).to_s, description: &amp;quot;Round 2 peer review&amp;quot; },&lt;br /&gt;
        { id: 2, date: (today + 7).to_s, description: &amp;quot;Review deadline&amp;quot; },&lt;br /&gt;
      ]&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* generate_review_grade: Generates a simulated review score with randomized logic, used for demonstration or test purposes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    # Generates a simulated review grade for a participant.&lt;br /&gt;
    # This is likely placeholder logic for demonstration or testing purposes.&lt;br /&gt;
    def self.generate_review_grade(participant)&lt;br /&gt;
      # Randomly decide whether the participant has reviews or not&lt;br /&gt;
      if [true, false].sample&lt;br /&gt;
        reviews = rand(1..6)&lt;br /&gt;
        base_score_per_review = 10&lt;br /&gt;
        penalty_percent = [0, 10, 25, 50].sample&lt;br /&gt;
        raw_score = reviews * base_score_per_review&lt;br /&gt;
        final_score = (raw_score * (1 - penalty_percent / 100.0)).round&lt;br /&gt;
    &lt;br /&gt;
        &amp;quot;Score: #{final_score}/100 \n&amp;quot; \&lt;br /&gt;
        &amp;quot;Comment: #{reviews} reviews x #{base_score_per_review} pts/review x #{100 - penalty_percent}% = #{final_score} points \n&amp;quot; \&lt;br /&gt;
        &amp;quot;Explanation penalty (-#{penalty_percent}%)&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        &amp;quot;N/A&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Routes.rb: ====&lt;br /&gt;
* Reused routes for student_tasks, including custom actions list and view to support UI rendering of task listings and detail views.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      resources :student_tasks do&lt;br /&gt;
        collection do&lt;br /&gt;
          get :list, action: :list&lt;br /&gt;
          get :view&lt;br /&gt;
        end&lt;br /&gt;
      end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Seeds.rb: ====&lt;br /&gt;
* Set up a sample student user (&amp;lt;b&amp;gt;niki&amp;lt;/b&amp;gt;) for testing.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Create first student with specific name &amp;quot;niki&amp;quot;&lt;br /&gt;
  student_user_ids &amp;lt;&amp;lt; User.create!(&lt;br /&gt;
    name: &amp;quot;niki&amp;quot;,&lt;br /&gt;
    email: &amp;quot;niki@example.com&amp;quot;,&lt;br /&gt;
    password: &amp;quot;password&amp;quot;,&lt;br /&gt;
    full_name: &amp;quot;Niki Jones&amp;quot;,&lt;br /&gt;
    institution_id: 1,&lt;br /&gt;
    role_id: 5&lt;br /&gt;
  ).id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Created a predefined list of assignment names.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  # Generate Specific Assignments names&lt;br /&gt;
  puts &amp;quot;Creating assignments with specific names&amp;quot;&lt;br /&gt;
  assignment_names = [&lt;br /&gt;
    &amp;quot;Program 1&amp;quot;,&lt;br /&gt;
    &amp;quot;Program 3&amp;quot;,&lt;br /&gt;
    &amp;quot;Program 4&amp;quot;,&lt;br /&gt;
    &amp;quot;Program 5&amp;quot;,&lt;br /&gt;
    &amp;quot;OSS Program 1&amp;quot;,&lt;br /&gt;
    &amp;quot;OSS Program 2&amp;quot;,&lt;br /&gt;
    &amp;quot;Program 6&amp;quot;,&lt;br /&gt;
    &amp;quot;Program 7&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Generated participants across all assignments for all students, with randomized stage data (current_stage, stage_deadline, topic) and team assignments to simulate realistic scenarios.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  puts &amp;quot;assigning participants to all students for all assignments&amp;quot;&lt;br /&gt;
  participant_ids = []&lt;br /&gt;
  # Array of possible stages&lt;br /&gt;
  stages = [&amp;quot;Not started&amp;quot;, &amp;quot;In progress&amp;quot;, &amp;quot;Submitted&amp;quot;, &amp;quot;Reviewed&amp;quot;, &amp;quot;Finished&amp;quot;]&lt;br /&gt;
  puts &amp;quot;Today is: #{Date.today + rand(1..10).days}&amp;quot;&lt;br /&gt;
  student_user_ids.each do |student_id|&lt;br /&gt;
    assignment_ids.each do |assignment_id|&lt;br /&gt;
      team_id = team_ids.sample # randomly assign a team for the assignment&lt;br /&gt;
      participant = Participant.create(&lt;br /&gt;
        user_id: student_id,&lt;br /&gt;
        stage_deadline: Date.today + rand(1..10).days,&lt;br /&gt;
        topic: &amp;quot;Topic #{rand(1..5)}&amp;quot;,&lt;br /&gt;
        permission_granted: true,&lt;br /&gt;
        current_stage: stages.sample,&lt;br /&gt;
        assignment_id:,&lt;br /&gt;
        team_id:&lt;br /&gt;
      )&lt;br /&gt;
      if participant.persisted?&lt;br /&gt;
        participant_ids &amp;lt;&amp;lt; participant.id&lt;br /&gt;
      else&lt;br /&gt;
        puts &amp;quot;Failed to create Participant: #{participant.errors.full_messages.join(', ')}&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reimplementation of Frontend ==&lt;br /&gt;
The new UI redesign replicates the functionality of the original page, now leveraging TypeScript for type safety and React for dynamic rendering. This approach enhances the user experience by providing a more responsive and accessible interface, while adhering to modern design principles.&lt;br /&gt;
&lt;br /&gt;
=== Data Fetching=== &lt;br /&gt;
The frontend communicates with the backend in real time, retrieving assignment details, deadlines, and review statuses dynamically to provide up-to-date task information.&lt;br /&gt;
&lt;br /&gt;
=== React Component Design === &lt;br /&gt;
The new design breaks down the UI into reusable React components, such as Header, Task Timeline, and TaskItem, to handle specific parts of the interface. This modular approach enhances code readability, maintainability, and reusability, promoting best practices in React development.&lt;br /&gt;
&lt;br /&gt;
=== Relevant File Details ===&lt;br /&gt;
==== StudentTaskDetail.tsx: ====&lt;br /&gt;
&amp;lt;b&amp;gt;1. Purpose:&amp;lt;/b&amp;gt; Displays comprehensive task details with interactive progress visualization.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Key Features:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a. Fetches task-specific data using URL params (useParams)&lt;br /&gt;
&lt;br /&gt;
b. Visual timeline with status indicators (completed/current/pending)&lt;br /&gt;
&lt;br /&gt;
c. Responsive grid layout for metadata display&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3. Code Snippet:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
import { useParams, Link, useLocation } from &amp;quot;react-router-dom&amp;quot;;&lt;br /&gt;
const StudentTaskDetail: React.FC = () =&amp;gt; {&lt;br /&gt;
  const { id } = useParams&amp;lt;{ id: string }&amp;gt;();&lt;br /&gt;
  // Get StudentDetails from Parent Component: StudentTasks.&lt;br /&gt;
  const StudentDetailsData = location.state;&lt;br /&gt;
&lt;br /&gt;
  const taskDetails = MockedStudentTaskDetails;&lt;br /&gt;
&lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className={styles.container}&amp;gt;&lt;br /&gt;
      {/* Add Heading */}&lt;br /&gt;
      ...&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
        {/* Add Interative Clickable Links List */}&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div&amp;gt;&lt;br /&gt;
        {/* Add Timeline + TimeStage  */}&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div&amp;gt; Footer &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;Link to=&amp;quot;/student_tasks&amp;quot; className=&amp;quot;back-link&amp;quot;&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
      &amp;lt;/Link&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
export default StudentTaskDetail;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StudentTaskDetail.module.css ====&lt;br /&gt;
&amp;lt;b&amp;gt;1. Purpose:&amp;lt;/b&amp;gt; Provides scoped styling for detail view components.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Code Snippet:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* StudentTaskDetail.module.css */&lt;br /&gt;
.container {&lt;br /&gt;
  max-width: 1200px;&lt;br /&gt;
  margin: 0 auto;&lt;br /&gt;
  padding: 20px;&lt;br /&gt;
  display: grid;&lt;br /&gt;
  gap: 25px;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.header {&lt;br /&gt;
  text-align: left;&lt;br /&gt;
  padding: 20px 0;&lt;br /&gt;
  font-size: x-large;&lt;br /&gt;
  /* border-bottom: 2px solid #eee; */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== StudentTasks.tsx: ====&lt;br /&gt;
&amp;lt;b&amp;gt;1. Purpose:&amp;lt;/b&amp;gt; Main view for assignment list with navigation links.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Key Features:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a. Iterates through task data and renders individual cards for each task&lt;br /&gt;
&lt;br /&gt;
b. Allows navigation to detailed task view via clickable links&lt;br /&gt;
&lt;br /&gt;
c. Dynamically reflects current status or completion state&lt;br /&gt;
&lt;br /&gt;
d. Supports responsive design for different screen sizes&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3. Code Snippet:&amp;lt;/b&amp;gt;&lt;br /&gt;
* Fetches task data from the backend (/student_tasks/list)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
 // State to hold tasks&lt;br /&gt;
  const [tasks, setTasks] = useState&amp;lt;Task[]&amp;gt;([]);&lt;br /&gt;
&lt;br /&gt;
  // Fetch student tasks from the backend when the component mounts&lt;br /&gt;
  useEffect(() =&amp;gt; {&lt;br /&gt;
    const fetchStudentTasks = async () =&amp;gt; {&lt;br /&gt;
      try {&lt;br /&gt;
        const response = await axiosClient.get(`/student_tasks/list`);&lt;br /&gt;
        setStudentTasksData(response.data);&lt;br /&gt;
      } catch (error) {&lt;br /&gt;
        console.error(&amp;quot;Error fetching student tasks:&amp;quot;, error);&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    fetchStudentTasks();&lt;br /&gt;
  }, []);&lt;br /&gt;
&lt;br /&gt;
  // Parse and update tasks whenever studentTasksData changes&lt;br /&gt;
  useEffect(() =&amp;gt; {&lt;br /&gt;
    setTasks(parseStudentTasks(studentTasksData));&lt;br /&gt;
  }, [studentTasksData]);&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Parses and structures raw task data into usable format&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  /**&lt;br /&gt;
   * Converts a raw list of student task data into a structured array of Task objects&lt;br /&gt;
   */&lt;br /&gt;
  function parseStudentTasks(rawList: any[]): Task[] {&lt;br /&gt;
    return rawList.map((item) =&amp;gt; {&lt;br /&gt;
      const participant = item.participant || {};&lt;br /&gt;
      const course = item.course || {};&lt;br /&gt;
      return {&lt;br /&gt;
        id: participant.id,&lt;br /&gt;
        assignment: item.assignment ?? &amp;quot;N/A&amp;quot;,&lt;br /&gt;
        course: course ?? &amp;quot;CSC 517&amp;quot;, // Not present in data, defaulting&lt;br /&gt;
        topic: participant.topic ?? &amp;quot;N/A&amp;quot;,&lt;br /&gt;
        currentStage: item.current_stage ?? participant.current_stage ?? &amp;quot;N/A&amp;quot;,&lt;br /&gt;
        reviewGrade: item.review_grade ?? &amp;quot;N/A&amp;quot;,&lt;br /&gt;
        badges: item.badges ?? false, // Adjust if you have badges logic elsewhere&lt;br /&gt;
        stageDeadline: item.stage_deadline ?? participant.stage_deadline ?? &amp;quot;&amp;quot;,&lt;br /&gt;
        publishingRights: participant.permission_granted ?? false,&lt;br /&gt;
        deadlines: item.deadlines, // Additional fields for StudentTaskDetails&lt;br /&gt;
      };&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Renders each task as a row with a clickable link  &lt;br /&gt;
* Supports responsive UI and navigation with react-router&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    {&lt;br /&gt;
      accessorKey: &amp;quot;assignment&amp;quot;,&lt;br /&gt;
      header: &amp;quot;Assignment&amp;quot;,&lt;br /&gt;
      cell: (info: CellContext&amp;lt;Task, string&amp;gt;) =&amp;gt; {&lt;br /&gt;
        const id = info.row.original.id;&lt;br /&gt;
        const matchedTask = tasks.find((task) =&amp;gt; task.id === id);&lt;br /&gt;
        return (&lt;br /&gt;
          &amp;lt;Link to={`/student_task_detail/${id}`} state={{ task: matchedTask }}&amp;gt;&lt;br /&gt;
            {info.getValue()}&lt;br /&gt;
          &amp;lt;/Link&amp;gt;&lt;br /&gt;
        );&lt;br /&gt;
      },&lt;br /&gt;
    },&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== App.tsx ====&lt;br /&gt;
&amp;lt;b&amp;gt;1. Purpose:&amp;lt;/b&amp;gt; Manages navigation hierarchy and accessibility.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Key relative feature:&amp;lt;/b&amp;gt; Provides skip links and landmark regions between StudentTasks and StudentTaskDetail components.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;3. Code Snippet:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;Route path=&amp;quot;/student_tasks&amp;quot; element={&amp;lt;StudentTasks /&amp;gt;}&amp;gt;  &lt;br /&gt;
  &amp;lt;Route path=&amp;quot;:id&amp;quot; element={&amp;lt;StudentTaskDetail /&amp;gt;} /&amp;gt;  &lt;br /&gt;
&amp;lt;/Route&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional Work ==&lt;br /&gt;
=== ToolTip.tsx ===&lt;br /&gt;
&lt;br /&gt;
As part of the UI refinement, we introduced a common Tooltip component to provide consistent, contextual information across the application. This component was specifically integrated into the StudentTasks table, replacing hardcoded or inline tooltips.&lt;br /&gt;
&lt;br /&gt;
By using this reusable Tooltip, we ensure:&lt;br /&gt;
* Consistent styling and behavior throughout the UI.&lt;br /&gt;
* Improved maintainability, allowing future updates in one place.&lt;br /&gt;
* Enhanced usability, giving students clear guidance on table headings and columns like review grade.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;StudentTasks.tsx&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
import ToolTip from &amp;quot;components/ToolTip&amp;quot;;&lt;br /&gt;
...&lt;br /&gt;
 cell: (info: CellContext&amp;lt;Task, Task[&amp;quot;reviewGrade&amp;quot;]&amp;gt;) =&amp;gt;&lt;br /&gt;
        info.getValue() === &amp;quot;N/A&amp;quot; ? (&lt;br /&gt;
          &amp;quot;NA&amp;quot;&lt;br /&gt;
        ) : (&lt;br /&gt;
          &amp;lt;ToolTip id=&amp;quot;info.row.original&amp;quot; info={info.row.original.reviewGrade || &amp;quot;&amp;quot;} /&amp;gt;&lt;br /&gt;
        ),&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Table.tsx&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
import ToolTip from &amp;quot;components/ToolTip&amp;quot;;&lt;br /&gt;
...&lt;br /&gt;
{comment &amp;amp;&amp;amp; &amp;lt;ToolTip id=&amp;quot;&amp;quot; info={comment} /&amp;gt;}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
In designing the Student Task View reimplementation, we adhere to key software design principles to ensure maintainability, scalability, and readability. The codebase follows the Single Responsibility Principle (SRP) by ensuring that each component and function has a well-defined purpose, reducing the likelihood of unintended changes. Separation of Concerns is maintained by structuring logic into modular components, making the system easier to debug and extend.&lt;br /&gt;
&lt;br /&gt;
==== Single Responsibility Principle (SRP) ==== &lt;br /&gt;
Each function and component in the frontend will focus on a specific aspect of task management, such as rendering assignment details, managing deadlines, or handling submission interactions.&lt;br /&gt;
&lt;br /&gt;
The backend will separate concerns by structuring controllers and services to isolate business logic from request handling.&lt;br /&gt;
&lt;br /&gt;
==== Don't Repeat Yourself (DRY) Principle ====&lt;br /&gt;
Common functionalities, such as fetching assignment details, checking deadlines, and managing user interactions, will be abstracted into reusable utility functions to reduce redundancy.&lt;br /&gt;
&lt;br /&gt;
Shared logic between different views (e.g., task details and submission interactions) will be extracted into reusable React components and backend services.&lt;br /&gt;
&lt;br /&gt;
==== Encapsulation &amp;amp; Modularity ==== &lt;br /&gt;
In the frontend, state management will be handled efficiently using React hooks and context, preventing unnecessary re-renders and ensuring data consistency.&lt;br /&gt;
&lt;br /&gt;
In the backend, controllers will delegate logic to service classes, limiting the exposure of business logic and maintaining a clear separation between data access and processing.&lt;br /&gt;
&lt;br /&gt;
==== Responsive &amp;amp; Accessible Design ====&lt;br /&gt;
The UI will follow responsive design principles, ensuring that the Student Task View adapts to different screen sizes and devices.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Test Plan for Student Task View Reimplementation&lt;br /&gt;
! Test ID&lt;br /&gt;
! Test Case&lt;br /&gt;
! Description&lt;br /&gt;
! Test Steps&lt;br /&gt;
! Expected Results&lt;br /&gt;
! Priority&lt;br /&gt;
! Status&lt;br /&gt;
|-&lt;br /&gt;
| TC1&lt;br /&gt;
| Verify Task Details Display&lt;br /&gt;
| Verify that task details (assignment name, due date, current stage, review status, and badges) are displayed correctly.&lt;br /&gt;
| 1. Open task view.&amp;lt;br&amp;gt;2. Check if the assignment name, due date, current stage, review status, and badges are displayed.&lt;br /&gt;
| The task view should display the assignment name, due date, current stage, review status, and associated badges in a clear, readable format.&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC2&lt;br /&gt;
| Verify Dynamic Updates for Task Details&lt;br /&gt;
| Verify that task details update dynamically when changes occur.&lt;br /&gt;
| 1. Change task details in the backend.&amp;lt;br&amp;gt;2. Refresh task view.&lt;br /&gt;
| Task details should update automatically without manual refresh and display the latest data.&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC3&lt;br /&gt;
| Verify Task Interaction Buttons&lt;br /&gt;
| Verify that buttons for task actions (submit, revise, view feedback) are visible and functional.&lt;br /&gt;
| 1. Open task view.&amp;lt;br&amp;gt;2. Check visibility of buttons (submit, revise, feedback).&amp;lt;br&amp;gt;3. Click each button and observe the action.&lt;br /&gt;
| Buttons are visible, clickable, and trigger the correct action (e.g., submitting, requesting revision, viewing feedback).&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC4&lt;br /&gt;
| Verify Task View Updates After Task Interaction&lt;br /&gt;
| Verify that the task view updates after submitting or requesting a revision.&lt;br /&gt;
| 1. Submit a task.&amp;lt;br&amp;gt;2. Check if the task view updates to reflect the submission status.&lt;br /&gt;
| After interaction, task view updates appropriately (e.g., shows &amp;quot;submitted&amp;quot; status after submission).&lt;br /&gt;
| Medium&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC5&lt;br /&gt;
| Verify Timeline Shows Task Due Dates&lt;br /&gt;
| Verify that the timeline displays task due dates correctly.&lt;br /&gt;
| 1. Open task timeline view.&amp;lt;br&amp;gt;2. Check that all task due dates are visually displayed on the timeline.&lt;br /&gt;
| The timeline should show the correct due dates for all tasks.&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC6&lt;br /&gt;
| Verify Dynamic Present Day Indicator on Timeline&lt;br /&gt;
| Verify that the timeline includes a dynamic indicator showing the present day and time.&lt;br /&gt;
| 1. Open task timeline view.&amp;lt;br&amp;gt;2. Check for a dynamic indicator showing the present day and time.&lt;br /&gt;
| A dynamic indicator should reflect the current day and time on the timeline.&lt;br /&gt;
| Medium&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC7&lt;br /&gt;
| Verify Tasks Are Represented on the Timeline&lt;br /&gt;
| Verify that tasks are visually represented on the timeline according to their due dates.&lt;br /&gt;
| 1. Open task timeline view.&amp;lt;br&amp;gt;2. Check that tasks are placed according to their respective due dates on the timeline.&lt;br /&gt;
| Tasks are visually represented and placed on the timeline based on their respective due dates.&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC8&lt;br /&gt;
| Verify Task Stages Display Correctly&lt;br /&gt;
| Verify that the task stages (e.g., submission, review, feedback) are displayed correctly.&lt;br /&gt;
| 1. Open task view.&amp;lt;br&amp;gt;2. Check if the task stages (submission, review, feedback) are displayed.&lt;br /&gt;
| Task stages should be clearly displayed with appropriate labels (e.g., &amp;quot;Submission&amp;quot;, &amp;quot;Review&amp;quot;, &amp;quot;Feedback&amp;quot;).&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC9&lt;br /&gt;
| Verify Current Stage Is Highlighted&lt;br /&gt;
| Verify that the current stage is visually highlighted.&lt;br /&gt;
| 1. Open task view.&amp;lt;br&amp;gt;2. Check if the current stage is visually highlighted.&lt;br /&gt;
| The current stage should be visually highlighted (e.g., different color or bold text).&lt;br /&gt;
| High&lt;br /&gt;
| Passed&lt;br /&gt;
|-&lt;br /&gt;
| TC10&lt;br /&gt;
| Verify Task Stages Are Navigable&lt;br /&gt;
| Verify that the task stages are navigable, allowing students to track progress.&lt;br /&gt;
| 1. Open task view.&amp;lt;br&amp;gt;2. Click on different stages to navigate through them.&lt;br /&gt;
| Students can navigate through stages and see details for each stage.&lt;br /&gt;
| Medium&lt;br /&gt;
| Passed&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
===Pull Requests===&lt;br /&gt;
&lt;br /&gt;
* Backend&lt;br /&gt;
&lt;br /&gt;
* Frontend&lt;br /&gt;
&lt;br /&gt;
===Repos===&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/Jing27540/reimplementation-back-end Backend Repo]&lt;br /&gt;
&lt;br /&gt;
*[https://github.com/Jing27540/reimplementation-front-end Frontend Repo]&lt;br /&gt;
&lt;br /&gt;
== Developer Guidance ==&lt;br /&gt;
&lt;br /&gt;
=== Backend ===&lt;br /&gt;
&lt;br /&gt;
==== Setup &amp;amp; Run (via Docker)====&lt;br /&gt;
Run the following commands from your project root to start the backend environment using Docker:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker-compose down            # Stops and removes containers, networks, and volumes&lt;br /&gt;
docker-compose build --no-cache  # Rebuilds images from scratch without cache&lt;br /&gt;
docker-compose up              # Starts the app with fresh containers&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Within the container ====&lt;br /&gt;
After starting the containers, access the Rails backend container and run the necessary setup commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
docker-compose exec web bash     # Open a terminal session inside the backend container&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Once inside the container, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bundle install                 # Installs necessary gems&lt;br /&gt;
rake db:migrate:reset         # Drops, creates, and runs migrations from scratch&lt;br /&gt;
rake db:seed                  # Seeds initial test/development data&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Frontend ===&lt;br /&gt;
&lt;br /&gt;
==== Frontend Setup &amp;amp; Run====&lt;br /&gt;
For setting up and running the frontend, use the following commands:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
npm install          # Installs necessary Node.js packages&lt;br /&gt;
npm start            # Starts the frontend application on your local server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mentor == &lt;br /&gt;
* &amp;lt;b&amp;gt;Anvitha Reddy Gutha&amp;lt;/b&amp;gt; &amp;lt;agutha@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Members == &lt;br /&gt;
* &amp;lt;b&amp;gt;Chinmay Nayak&amp;lt;/b&amp;gt; &amp;lt;cnayak@ncsu.edu&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;Joannes Koomson&amp;lt;/b&amp;gt; &amp;lt;jokoomso@ncsu.edu&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;Jing Huang&amp;lt;/b&amp;gt; &amp;lt;jhuang42@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Image-studenttask.png&amp;diff=164148</id>
		<title>File:Image-studenttask.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Image-studenttask.png&amp;diff=164148"/>
		<updated>2025-04-20T01:03:17Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=163134</id>
		<title>CSC/ECE 517 Spring 2025 - E2539 Reimplement Student Task View (Frontend + Backend)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=163134"/>
		<updated>2025-04-03T23:37:36Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Expertiza ==&lt;br /&gt;
Expertiza is a robust, open-source web platform designed to empower educational environments that emphasize project-based learning. It streamlines collaborative activities—such as peer reviews, surveys, and team assignments—into an engaging, interactive experience that supports both teaching and learning.&lt;br /&gt;
&lt;br /&gt;
'''For Instructors:'''&lt;br /&gt;
Expertiza offers a comprehensive suite of tools to manage assignments, provide timely and constructive feedback, and track performance metrics. This enables educators to monitor student progress effectively and ensure optimal learning outcomes.&lt;br /&gt;
&lt;br /&gt;
'''For Students:'''&lt;br /&gt;
The platform is designed with learner engagement at its core. It allows students to actively participate in tasks, collaborate seamlessly with peers, and evaluate each other’s work. This approach not only promotes academic growth but also enhances critical thinking, problem-solving, and teamwork skills.&lt;br /&gt;
&lt;br /&gt;
Expertiza’s flexible architecture makes it ideal for a wide range of educational scenarios—from individual assignments to complex group projects and dynamic peer-review processes—ensuring an enriched, adaptive learning environment for all users.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The E2539 Reimplement Student Task View project aims to modernize and enhance the Student Task View within the Expertiza application, addressing its current usability limitations. The existing interface lacks responsiveness and user-friendly features, making it difficult for students to efficiently manage assignments, track progress, and access feedback. Under the guidance of Mentor Anvitha Reddy Gutha, this project will leverage React.js and TypeScript for the frontend and Ruby on Rails for the backend to create an interactive and accessible task management system. The reimplementation will introduce a streamlined task display, interactive submission and feedback features, and a dynamic timeline visualization to improve the student experience. Additionally, the backend will be redesigned to support real-time updates and seamless data integration. By addressing these challenges, this project will significantly enhance usability, ensuring a more intuitive and efficient workflow for students.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The current Student Task View within the Expertiza application provides essential assignment details, deadlines, and progress tracking but falls short in delivering a responsive, user-friendly experience. The existing interface's limitations hinder students from efficiently managing their tasks, submitting assignments, and accessing feedback.&lt;br /&gt;
&lt;br /&gt;
This project, guided by Mentor Anvitha Reddy Gutha, aims to reimplement the Student Task View using React.js and TypeScript for the frontend, and Ruby on Rails for the backend. The goal is to transform the current view into a modern, interactive, and accessible platform that offers real-time updates and streamlined task management.&lt;br /&gt;
&lt;br /&gt;
'''Key challenges to address include:'''&lt;br /&gt;
&lt;br /&gt;
*'''Enhanced Task Details Display:''' Present detailed information such as assignment name, due date, current stage, review status, and badges in a clear, concise manner.&lt;br /&gt;
&lt;br /&gt;
*'''Interactive Task Management:''' Enable interactive elements like submission buttons, revision requests, and feedback viewing, ensuring intuitive navigation through different task stages.&lt;br /&gt;
&lt;br /&gt;
*'''Dynamic Timeline Visualization:''' Implement a timeline that visually represents all due dates and highlights the current day and time, providing students with a clear overview of their deadlines.&lt;br /&gt;
&lt;br /&gt;
*'''Backend Integration:''' Reimplement and integrate the backend to support the new functionalities, ensuring seamless data flow and real-time updates.&lt;br /&gt;
&lt;br /&gt;
By addressing these challenges, the project will significantly improve the user experience, enhance student engagement, and support a more effective workflow for assignment management.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Student Task Overview Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:StudentTask Design E2539.jpg |800px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Student Task UI Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:StudentTask view draf.jpg |600px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Improved Plan for Implementation of StudentTask Controller ==&lt;br /&gt;
&lt;br /&gt;
==== Action Permissions ====&lt;br /&gt;
The action_allowed? method will ensure that only authorized users, such as students and specific roles, can interact with student tasks. It will authenticate the user, verify their role, and ensure they have the necessary permissions to access or modify student task data. Unauthorized access will be blocked with an appropriate error message.&lt;br /&gt;
&lt;br /&gt;
==== Task Retrieval ====&lt;br /&gt;
&lt;br /&gt;
* List Action: This action will return all tasks assigned to the currently logged-in student, organized in a structured JSON format. It ensures students can view their tasks clearly and efficiently.&lt;br /&gt;
&lt;br /&gt;
* Show Action: Retrieves a single task by its ID, returning the task details in JSON format. If the task is not found or if the user does not have access to it, the action will respond with an error message such as &amp;quot;Task not found&amp;quot; or &amp;quot;Unauthorized access.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* View Action: Allows querying student tasks using a participant ID. This is particularly useful when retrieving task details for participants in multi-user systems, returning a comprehensive JSON array of data. &lt;br /&gt;
&lt;br /&gt;
==== Comprehensive Testing with RSwag ====&lt;br /&gt;
Tests will be created for each API endpoint, covering:&lt;br /&gt;
&lt;br /&gt;
* Successful Task Retrieval: Verifying that valid requests return the expected task data.&lt;br /&gt;
&lt;br /&gt;
* Error Scenarios: Ensuring that tasks are not retrieved if the task ID is invalid, if the user is unauthorized, or if the task does not exist.&lt;br /&gt;
&lt;br /&gt;
* Edge Cases: Handling scenarios like empty task lists, non-existent participant IDs, or invalid authentication tokens.&lt;br /&gt;
&lt;br /&gt;
These tests will be incorporated into the Continuous Integration pipeline to maintain robust error handling and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation of StudentTask View ==&lt;br /&gt;
The new UI redesign replicates the functionality of the original page, now leveraging TypeScript for type safety and React for dynamic rendering. This approach enhances the user experience by providing a more responsive and accessible interface, while adhering to modern design principles.&lt;br /&gt;
&lt;br /&gt;
==== Data Fetching ==== &lt;br /&gt;
The frontend communicates with the backend in real time, retrieving assignment details, deadlines, and review statuses dynamically to provide up-to-date task information.&lt;br /&gt;
&lt;br /&gt;
==== React Component Design ==== &lt;br /&gt;
The new design breaks down the UI into reusable React components, such as Header, Task Timeline, and TaskItem, to handle specific parts of the interface. This modular approach enhances code readability, maintainability, and reusability, promoting best practices in React development.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
In designing the Student Task View reimplementation, we adhere to key software design principles to ensure maintainability, scalability, and readability. The codebase follows the Single Responsibility Principle (SRP) by ensuring that each component and function has a well-defined purpose, reducing the likelihood of unintended changes. Separation of Concerns is maintained by structuring logic into modular components, making the system easier to debug and extend.&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) === &lt;br /&gt;
Each function and component in the frontend will focus on a specific aspect of task management, such as rendering assignment details, managing deadlines, or handling submission interactions.&lt;br /&gt;
&lt;br /&gt;
The backend will separate concerns by structuring controllers and services to isolate business logic from request handling.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) Principle ===&lt;br /&gt;
Common functionalities, such as fetching assignment details, checking deadlines, and managing user interactions, will be abstracted into reusable utility functions to reduce redundancy.&lt;br /&gt;
&lt;br /&gt;
Shared logic between different views (e.g., task details and submission interactions) will be extracted into reusable React components and backend services.&lt;br /&gt;
&lt;br /&gt;
=== Encapsulation &amp;amp; Modularity === &lt;br /&gt;
In the frontend, state management will be handled efficiently using React hooks and context, preventing unnecessary re-renders and ensuring data consistency.&lt;br /&gt;
&lt;br /&gt;
In the backend, controllers will delegate logic to service classes, limiting the exposure of business logic and maintaining a clear separation between data access and processing.&lt;br /&gt;
&lt;br /&gt;
=== Responsive &amp;amp; Accessible Design ===&lt;br /&gt;
The UI will follow responsive design principles, ensuring that the Student Task View adapts to different screen sizes and devices.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
=====Mentor===== &lt;br /&gt;
*Anvitha Reddy Gutha&lt;br /&gt;
&lt;br /&gt;
=====Members===== &lt;br /&gt;
*Jing Huang&lt;br /&gt;
*Joannes Koomson&lt;br /&gt;
*Chinmay Nayak&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=163133</id>
		<title>CSC/ECE 517 Spring 2025 - E2539 Reimplement Student Task View (Frontend + Backend)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=163133"/>
		<updated>2025-04-03T23:34:50Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Expertiza ==&lt;br /&gt;
Expertiza is a robust, open-source web platform designed to empower educational environments that emphasize project-based learning. It streamlines collaborative activities—such as peer reviews, surveys, and team assignments—into an engaging, interactive experience that supports both teaching and learning.&lt;br /&gt;
&lt;br /&gt;
'''For Instructors:'''&lt;br /&gt;
Expertiza offers a comprehensive suite of tools to manage assignments, provide timely and constructive feedback, and track performance metrics. This enables educators to monitor student progress effectively and ensure optimal learning outcomes.&lt;br /&gt;
&lt;br /&gt;
'''For Students:'''&lt;br /&gt;
The platform is designed with learner engagement at its core. It allows students to actively participate in tasks, collaborate seamlessly with peers, and evaluate each other’s work. This approach not only promotes academic growth but also enhances critical thinking, problem-solving, and teamwork skills.&lt;br /&gt;
&lt;br /&gt;
Expertiza’s flexible architecture makes it ideal for a wide range of educational scenarios—from individual assignments to complex group projects and dynamic peer-review processes—ensuring an enriched, adaptive learning environment for all users.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The E2539 Reimplement Student Task View project aims to modernize and enhance the Student Task View within the Expertiza application, addressing its current usability limitations. The existing interface lacks responsiveness and user-friendly features, making it difficult for students to efficiently manage assignments, track progress, and access feedback. Under the guidance of Mentor Anvitha Reddy Gutha, this project will leverage React.js and TypeScript for the frontend and Ruby on Rails for the backend to create an interactive and accessible task management system. The reimplementation will introduce a streamlined task display, interactive submission and feedback features, and a dynamic timeline visualization to improve the student experience. Additionally, the backend will be redesigned to support real-time updates and seamless data integration. By addressing these challenges, this project will significantly enhance usability, ensuring a more intuitive and efficient workflow for students.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The current Student Task View within the Expertiza application provides essential assignment details, deadlines, and progress tracking but falls short in delivering a responsive, user-friendly experience. The existing interface's limitations hinder students from efficiently managing their tasks, submitting assignments, and accessing feedback.&lt;br /&gt;
&lt;br /&gt;
This project, guided by Mentor Anvitha Reddy Gutha, aims to reimplement the Student Task View using React.js and TypeScript for the frontend, and Ruby on Rails for the backend. The goal is to transform the current view into a modern, interactive, and accessible platform that offers real-time updates and streamlined task management.&lt;br /&gt;
&lt;br /&gt;
'''Key challenges to address include:'''&lt;br /&gt;
&lt;br /&gt;
*'''Enhanced Task Details Display:''' Present detailed information such as assignment name, due date, current stage, review status, and badges in a clear, concise manner.&lt;br /&gt;
&lt;br /&gt;
*'''Interactive Task Management:''' Enable interactive elements like submission buttons, revision requests, and feedback viewing, ensuring intuitive navigation through different task stages.&lt;br /&gt;
&lt;br /&gt;
*'''Dynamic Timeline Visualization:''' Implement a timeline that visually represents all due dates and highlights the current day and time, providing students with a clear overview of their deadlines.&lt;br /&gt;
&lt;br /&gt;
*'''Backend Integration:''' Reimplement and integrate the backend to support the new functionalities, ensuring seamless data flow and real-time updates.&lt;br /&gt;
&lt;br /&gt;
By addressing these challenges, the project will significantly improve the user experience, enhance student engagement, and support a more effective workflow for assignment management.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Student Task Overview Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:StudentTask Design E2539.jpg |800px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Student Task UI Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:StudentTask view draf.jpg |600px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Improved Plan for Implementation of StudentTask Controller ==&lt;br /&gt;
&lt;br /&gt;
==== Action Permissions ====&lt;br /&gt;
The action_allowed? method will ensure that only authorized users, such as students and specific roles, can interact with student tasks. It will authenticate the user, verify their role, and ensure they have the necessary permissions to access or modify student task data. Unauthorized access will be blocked with an appropriate error message.&lt;br /&gt;
&lt;br /&gt;
==== Task Retrieval ====&lt;br /&gt;
&lt;br /&gt;
* List Action: This action will return all tasks assigned to the currently logged-in student, organized in a structured JSON format. It ensures students can view their tasks clearly and efficiently.&lt;br /&gt;
&lt;br /&gt;
* Show Action: Retrieves a single task by its ID, returning the task details in JSON format. If the task is not found or if the user does not have access to it, the action will respond with an error message such as &amp;quot;Task not found&amp;quot; or &amp;quot;Unauthorized access.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* View Action: Allows querying student tasks using a participant ID. This is particularly useful when retrieving task details for participants in multi-user systems, returning a comprehensive JSON array of data. &lt;br /&gt;
&lt;br /&gt;
==== Comprehensive Testing with RSwag ====&lt;br /&gt;
Tests will be created for each API endpoint, covering:&lt;br /&gt;
&lt;br /&gt;
* Successful Task Retrieval: Verifying that valid requests return the expected task data.&lt;br /&gt;
&lt;br /&gt;
* Error Scenarios: Ensuring that tasks are not retrieved if the task ID is invalid, if the user is unauthorized, or if the task does not exist.&lt;br /&gt;
&lt;br /&gt;
* Edge Cases: Handling scenarios like empty task lists, non-existent participant IDs, or invalid authentication tokens.&lt;br /&gt;
&lt;br /&gt;
These tests will be incorporated into the Continuous Integration pipeline to maintain robust error handling and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation of StudentTask View ==&lt;br /&gt;
The new UI redesign replicates the functionality of the original page, now leveraging TypeScript for type safety and React for dynamic rendering. This approach enhances the user experience by providing a more responsive and accessible interface, while adhering to modern design principles.&lt;br /&gt;
&lt;br /&gt;
==== Data Fetching ==== &lt;br /&gt;
The frontend communicates with the backend in real time, retrieving assignment details, deadlines, and review statuses dynamically to provide up-to-date task information.&lt;br /&gt;
&lt;br /&gt;
==== React Component Design ==== &lt;br /&gt;
The new design breaks down the UI into reusable React components, such as Header, Task Timeline, and TaskItem, to handle specific parts of the interface. This modular approach enhances code readability, maintainability, and reusability, promoting best practices in React development.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
In designing the Student Task View reimplementation, we adhere to key software design principles to ensure maintainability, scalability, and readability. The codebase follows the Single Responsibility Principle (SRP) by ensuring that each component and function has a well-defined purpose, reducing the likelihood of unintended changes. Separation of Concerns is maintained by structuring logic into modular components, making the system easier to debug and extend.&lt;br /&gt;
&lt;br /&gt;
=== Single Responsibility Principle (SRP) === &lt;br /&gt;
Each function and component in the frontend will focus on a specific aspect of task management, such as rendering assignment details, managing deadlines, or handling submission interactions.&lt;br /&gt;
&lt;br /&gt;
The backend will separate concerns by structuring controllers and services to isolate business logic from request handling.&lt;br /&gt;
&lt;br /&gt;
=== Don't Repeat Yourself (DRY) Principle ===&lt;br /&gt;
Common functionalities, such as fetching assignment details, checking deadlines, and managing user interactions, will be abstracted into reusable utility functions to reduce redundancy.&lt;br /&gt;
&lt;br /&gt;
Shared logic between different views (e.g., task details and submission interactions) will be extracted into reusable React components and backend services.&lt;br /&gt;
&lt;br /&gt;
=== Encapsulation &amp;amp; Modularity === &lt;br /&gt;
In the frontend, state management will be handled efficiently using React hooks and context, preventing unnecessary re-renders and ensuring data consistency.&lt;br /&gt;
&lt;br /&gt;
In the backend, controllers will delegate logic to service classes, limiting the exposure of business logic and maintaining a clear separation between data access and processing.&lt;br /&gt;
&lt;br /&gt;
=== Responsive &amp;amp; Accessible Design ===&lt;br /&gt;
The UI will follow responsive design principles, ensuring that the Student Task View adapts to different screen sizes and devices.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=163132</id>
		<title>CSC/ECE 517 Spring 2025 - E2539 Reimplement Student Task View (Frontend + Backend)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=163132"/>
		<updated>2025-04-03T23:32:06Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: /* Design Principles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Expertiza ==&lt;br /&gt;
Expertiza is a robust, open-source web platform designed to empower educational environments that emphasize project-based learning. It streamlines collaborative activities—such as peer reviews, surveys, and team assignments—into an engaging, interactive experience that supports both teaching and learning.&lt;br /&gt;
&lt;br /&gt;
'''For Instructors:'''&lt;br /&gt;
Expertiza offers a comprehensive suite of tools to manage assignments, provide timely and constructive feedback, and track performance metrics. This enables educators to monitor student progress effectively and ensure optimal learning outcomes.&lt;br /&gt;
&lt;br /&gt;
'''For Students:'''&lt;br /&gt;
The platform is designed with learner engagement at its core. It allows students to actively participate in tasks, collaborate seamlessly with peers, and evaluate each other’s work. This approach not only promotes academic growth but also enhances critical thinking, problem-solving, and teamwork skills.&lt;br /&gt;
&lt;br /&gt;
Expertiza’s flexible architecture makes it ideal for a wide range of educational scenarios—from individual assignments to complex group projects and dynamic peer-review processes—ensuring an enriched, adaptive learning environment for all users.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The E2539 Reimplement Student Task View project aims to modernize and enhance the Student Task View within the Expertiza application, addressing its current usability limitations. The existing interface lacks responsiveness and user-friendly features, making it difficult for students to efficiently manage assignments, track progress, and access feedback. Under the guidance of Mentor Anvitha Reddy Gutha, this project will leverage React.js and TypeScript for the frontend and Ruby on Rails for the backend to create an interactive and accessible task management system. The reimplementation will introduce a streamlined task display, interactive submission and feedback features, and a dynamic timeline visualization to improve the student experience. Additionally, the backend will be redesigned to support real-time updates and seamless data integration. By addressing these challenges, this project will significantly enhance usability, ensuring a more intuitive and efficient workflow for students.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The current Student Task View within the Expertiza application provides essential assignment details, deadlines, and progress tracking but falls short in delivering a responsive, user-friendly experience. The existing interface's limitations hinder students from efficiently managing their tasks, submitting assignments, and accessing feedback.&lt;br /&gt;
&lt;br /&gt;
This project, guided by Mentor Anvitha Reddy Gutha, aims to reimplement the Student Task View using React.js and TypeScript for the frontend, and Ruby on Rails for the backend. The goal is to transform the current view into a modern, interactive, and accessible platform that offers real-time updates and streamlined task management.&lt;br /&gt;
&lt;br /&gt;
'''Key challenges to address include:'''&lt;br /&gt;
&lt;br /&gt;
*'''Enhanced Task Details Display:''' Present detailed information such as assignment name, due date, current stage, review status, and badges in a clear, concise manner.&lt;br /&gt;
&lt;br /&gt;
*'''Interactive Task Management:''' Enable interactive elements like submission buttons, revision requests, and feedback viewing, ensuring intuitive navigation through different task stages.&lt;br /&gt;
&lt;br /&gt;
*'''Dynamic Timeline Visualization:''' Implement a timeline that visually represents all due dates and highlights the current day and time, providing students with a clear overview of their deadlines.&lt;br /&gt;
&lt;br /&gt;
*'''Backend Integration:''' Reimplement and integrate the backend to support the new functionalities, ensuring seamless data flow and real-time updates.&lt;br /&gt;
&lt;br /&gt;
By addressing these challenges, the project will significantly improve the user experience, enhance student engagement, and support a more effective workflow for assignment management.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Student Task Overview Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:StudentTask Design E2539.jpg |800px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Student Task UI Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:StudentTask view draf.jpg |600px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Improved Plan for Implementation of StudentTask Controller ==&lt;br /&gt;
&lt;br /&gt;
==== Action Permissions ====&lt;br /&gt;
The action_allowed? method will ensure that only authorized users, such as students and specific roles, can interact with student tasks. It will authenticate the user, verify their role, and ensure they have the necessary permissions to access or modify student task data. Unauthorized access will be blocked with an appropriate error message.&lt;br /&gt;
&lt;br /&gt;
==== Task Retrieval ====&lt;br /&gt;
&lt;br /&gt;
* List Action: This action will return all tasks assigned to the currently logged-in student, organized in a structured JSON format. It ensures students can view their tasks clearly and efficiently.&lt;br /&gt;
&lt;br /&gt;
* Show Action: Retrieves a single task by its ID, returning the task details in JSON format. If the task is not found or if the user does not have access to it, the action will respond with an error message such as &amp;quot;Task not found&amp;quot; or &amp;quot;Unauthorized access.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* View Action: Allows querying student tasks using a participant ID. This is particularly useful when retrieving task details for participants in multi-user systems, returning a comprehensive JSON array of data. &lt;br /&gt;
&lt;br /&gt;
==== Comprehensive Testing with RSwag ====&lt;br /&gt;
Tests will be created for each API endpoint, covering:&lt;br /&gt;
&lt;br /&gt;
* Successful Task Retrieval: Verifying that valid requests return the expected task data.&lt;br /&gt;
&lt;br /&gt;
* Error Scenarios: Ensuring that tasks are not retrieved if the task ID is invalid, if the user is unauthorized, or if the task does not exist.&lt;br /&gt;
&lt;br /&gt;
* Edge Cases: Handling scenarios like empty task lists, non-existent participant IDs, or invalid authentication tokens.&lt;br /&gt;
&lt;br /&gt;
These tests will be incorporated into the Continuous Integration pipeline to maintain robust error handling and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation of StudentTask View ==&lt;br /&gt;
The new UI redesign replicates the functionality of the original page, now leveraging TypeScript for type safety and React for dynamic rendering. This approach enhances the user experience by providing a more responsive and accessible interface, while adhering to modern design principles.&lt;br /&gt;
&lt;br /&gt;
==== Data Fetching ==== &lt;br /&gt;
The frontend communicates with the backend in real time, retrieving assignment details, deadlines, and review statuses dynamically to provide up-to-date task information.&lt;br /&gt;
&lt;br /&gt;
==== React Component Design ==== &lt;br /&gt;
The new design breaks down the UI into reusable React components, such as Header, Task Timeline, and TaskItem, to handle specific parts of the interface. This modular approach enhances code readability, maintainability, and reusability, promoting best practices in React development.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
In designing the Student Task View reimplementation, we adhere to key software design principles to ensure maintainability, scalability, and readability. The codebase follows the Single Responsibility Principle (SRP) by ensuring that each component and function has a well-defined purpose, reducing the likelihood of unintended changes. Separation of Concerns is maintained by structuring logic into modular components, making the system easier to debug and extend.&lt;br /&gt;
&lt;br /&gt;
1) Single Responsibility Principle (SRP)&lt;br /&gt;
Each function and component in the frontend will focus on a specific aspect of task management, such as rendering assignment details, managing deadlines, or handling submission interactions.&lt;br /&gt;
&lt;br /&gt;
The backend will separate concerns by structuring controllers and services to isolate business logic from request handling.&lt;br /&gt;
&lt;br /&gt;
2) Don't Repeat Yourself (DRY) Principle&lt;br /&gt;
Common functionalities, such as fetching assignment details, checking deadlines, and managing user interactions, will be abstracted into reusable utility functions to reduce redundancy.&lt;br /&gt;
&lt;br /&gt;
Shared logic between different views (e.g., task details and submission interactions) will be extracted into reusable React components and backend services.&lt;br /&gt;
&lt;br /&gt;
3) Encapsulation &amp;amp; Modularity&lt;br /&gt;
In the frontend, state management will be handled efficiently using React hooks and context, preventing unnecessary re-renders and ensuring data consistency.&lt;br /&gt;
&lt;br /&gt;
In the backend, controllers will delegate logic to service classes, limiting the exposure of business logic and maintaining a clear separation between data access and processing.&lt;br /&gt;
&lt;br /&gt;
4) Responsive &amp;amp; Accessible Design&lt;br /&gt;
The UI will follow responsive design principles, ensuring that the Student Task View adapts to different screen sizes and devices.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=163131</id>
		<title>CSC/ECE 517 Spring 2025 - E2539 Reimplement Student Task View (Frontend + Backend)</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2539_Reimplement_Student_Task_View_(Frontend_%2B_Backend)&amp;diff=163131"/>
		<updated>2025-04-03T23:12:16Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About Expertiza ==&lt;br /&gt;
Expertiza is a robust, open-source web platform designed to empower educational environments that emphasize project-based learning. It streamlines collaborative activities—such as peer reviews, surveys, and team assignments—into an engaging, interactive experience that supports both teaching and learning.&lt;br /&gt;
&lt;br /&gt;
'''For Instructors:'''&lt;br /&gt;
Expertiza offers a comprehensive suite of tools to manage assignments, provide timely and constructive feedback, and track performance metrics. This enables educators to monitor student progress effectively and ensure optimal learning outcomes.&lt;br /&gt;
&lt;br /&gt;
'''For Students:'''&lt;br /&gt;
The platform is designed with learner engagement at its core. It allows students to actively participate in tasks, collaborate seamlessly with peers, and evaluate each other’s work. This approach not only promotes academic growth but also enhances critical thinking, problem-solving, and teamwork skills.&lt;br /&gt;
&lt;br /&gt;
Expertiza’s flexible architecture makes it ideal for a wide range of educational scenarios—from individual assignments to complex group projects and dynamic peer-review processes—ensuring an enriched, adaptive learning environment for all users.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
The E2539 Reimplement Student Task View project aims to modernize and enhance the Student Task View within the Expertiza application, addressing its current usability limitations. The existing interface lacks responsiveness and user-friendly features, making it difficult for students to efficiently manage assignments, track progress, and access feedback. Under the guidance of Mentor Anvitha Reddy Gutha, this project will leverage React.js and TypeScript for the frontend and Ruby on Rails for the backend to create an interactive and accessible task management system. The reimplementation will introduce a streamlined task display, interactive submission and feedback features, and a dynamic timeline visualization to improve the student experience. Additionally, the backend will be redesigned to support real-time updates and seamless data integration. By addressing these challenges, this project will significantly enhance usability, ensuring a more intuitive and efficient workflow for students.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
The current Student Task View within the Expertiza application provides essential assignment details, deadlines, and progress tracking but falls short in delivering a responsive, user-friendly experience. The existing interface's limitations hinder students from efficiently managing their tasks, submitting assignments, and accessing feedback.&lt;br /&gt;
&lt;br /&gt;
This project, guided by Mentor Anvitha Reddy Gutha, aims to reimplement the Student Task View using React.js and TypeScript for the frontend, and Ruby on Rails for the backend. The goal is to transform the current view into a modern, interactive, and accessible platform that offers real-time updates and streamlined task management.&lt;br /&gt;
&lt;br /&gt;
'''Key challenges to address include:'''&lt;br /&gt;
&lt;br /&gt;
*'''Enhanced Task Details Display:''' Present detailed information such as assignment name, due date, current stage, review status, and badges in a clear, concise manner.&lt;br /&gt;
&lt;br /&gt;
*'''Interactive Task Management:''' Enable interactive elements like submission buttons, revision requests, and feedback viewing, ensuring intuitive navigation through different task stages.&lt;br /&gt;
&lt;br /&gt;
*'''Dynamic Timeline Visualization:''' Implement a timeline that visually represents all due dates and highlights the current day and time, providing students with a clear overview of their deadlines.&lt;br /&gt;
&lt;br /&gt;
*'''Backend Integration:''' Reimplement and integrate the backend to support the new functionalities, ensuring seamless data flow and real-time updates.&lt;br /&gt;
&lt;br /&gt;
By addressing these challenges, the project will significantly improve the user experience, enhance student engagement, and support a more effective workflow for assignment management.&lt;br /&gt;
&lt;br /&gt;
== Design ==&lt;br /&gt;
=== Student Task Overview Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:StudentTask Design E2539.jpg |800px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Student Task UI Design Diagram ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:StudentTask view draf.jpg |600px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Improved Plan for Implementation of StudentTask Controller ==&lt;br /&gt;
&lt;br /&gt;
==== Action Permissions ====&lt;br /&gt;
The action_allowed? method will ensure that only authorized users, such as students and specific roles, can interact with student tasks. It will authenticate the user, verify their role, and ensure they have the necessary permissions to access or modify student task data. Unauthorized access will be blocked with an appropriate error message.&lt;br /&gt;
&lt;br /&gt;
==== Task Retrieval ====&lt;br /&gt;
&lt;br /&gt;
* List Action: This action will return all tasks assigned to the currently logged-in student, organized in a structured JSON format. It ensures students can view their tasks clearly and efficiently.&lt;br /&gt;
&lt;br /&gt;
* Show Action: Retrieves a single task by its ID, returning the task details in JSON format. If the task is not found or if the user does not have access to it, the action will respond with an error message such as &amp;quot;Task not found&amp;quot; or &amp;quot;Unauthorized access.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* View Action: Allows querying student tasks using a participant ID. This is particularly useful when retrieving task details for participants in multi-user systems, returning a comprehensive JSON array of data. &lt;br /&gt;
&lt;br /&gt;
==== Comprehensive Testing with RSwag ====&lt;br /&gt;
Tests will be created for each API endpoint, covering:&lt;br /&gt;
&lt;br /&gt;
* Successful Task Retrieval: Verifying that valid requests return the expected task data.&lt;br /&gt;
&lt;br /&gt;
* Error Scenarios: Ensuring that tasks are not retrieved if the task ID is invalid, if the user is unauthorized, or if the task does not exist.&lt;br /&gt;
&lt;br /&gt;
* Edge Cases: Handling scenarios like empty task lists, non-existent participant IDs, or invalid authentication tokens.&lt;br /&gt;
&lt;br /&gt;
These tests will be incorporated into the Continuous Integration pipeline to maintain robust error handling and prevent regressions.&lt;br /&gt;
&lt;br /&gt;
== Plan for Reimplementation of StudentTask View ==&lt;br /&gt;
The new UI redesign replicates the functionality of the original page, now leveraging TypeScript for type safety and React for dynamic rendering. This approach enhances the user experience by providing a more responsive and accessible interface, while adhering to modern design principles.&lt;br /&gt;
&lt;br /&gt;
==== Data Fetching ==== &lt;br /&gt;
The frontend communicates with the backend in real time, retrieving assignment details, deadlines, and review statuses dynamically to provide up-to-date task information.&lt;br /&gt;
&lt;br /&gt;
==== React Component Design ==== &lt;br /&gt;
The new design breaks down the UI into reusable React components, such as Header, Task Timeline, and TaskItem, to handle specific parts of the interface. This modular approach enhances code readability, maintainability, and reusability, promoting best practices in React development.&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2522._Enhancing_UI_Consistency_in_Expertiza_1&amp;diff=161790</id>
		<title>CSC/ECE 517 Spring 2025 - E2522. Enhancing UI Consistency in Expertiza 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2522._Enhancing_UI_Consistency_in_Expertiza_1&amp;diff=161790"/>
		<updated>2025-03-23T05:07:38Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: Adding Future Scope&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza platform is an open-source tool used for managing peer reviews, team collaborations, and project-based learning. In this project, our goal was to enhance the UI consistency and usability by refining key tables and UI components to meet modern design standards. The primary focus was on the Student Task Table and Course Assignment Table, aligning them with best practices in usability and design.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Platform Overview and Prior Work ==&lt;br /&gt;
&lt;br /&gt;
=== Expertiza Overview ===&lt;br /&gt;
&lt;br /&gt;
Expertiza is a widely used platform for conducting peer reviews and managing course assignments. It supports various task types, including surveys, evaluations, and team collaborations, helping instructors and students achieve better learning outcomes.&lt;br /&gt;
&lt;br /&gt;
=== Previous PR Highlights ===&lt;br /&gt;
&lt;br /&gt;
Our work builds upon prior UI improvements made in the following pull request&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; E2446: Implement Front End for Student Task List #52]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Introduced an initial UI for managing and displaying student tasks.&lt;br /&gt;
&lt;br /&gt;
* Reference [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2446_Implement_Front_End_for_Student_Task_List E2446: Implement Front End for Student Task List]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentTask(PR52).jpeg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; [https://github.com/expertiza/reimplementation-front-end/pull/76 E2491. View Assignments in Courses View #76]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Focused on refining the UI for course assignments.&lt;br /&gt;
&lt;br /&gt;
* Reference: E2491: View Assignments in Courses View&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment(PR76).jpeg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
Prior UI implementations for the Student Task Table and Course Assignment Table lacked consistency and usability, making it difficult to navigate and use effectively. The goal of this project is to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Key Objetives&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Standardizing table components for improved reusability.&lt;br /&gt;
&lt;br /&gt;
* Enhancing text formatting, pagination, and search functionality.&lt;br /&gt;
&lt;br /&gt;
* Streamlining the UI by removing unnecessary elements and improving clarity.&lt;br /&gt;
&lt;br /&gt;
== Technologies ==&lt;br /&gt;
&lt;br /&gt;
a. &amp;lt;b&amp;gt;Frontend:&amp;lt;/b&amp;gt; React, TypeScript&lt;br /&gt;
&lt;br /&gt;
b. &amp;lt;b&amp;gt;Student Task Component Structure:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Main Table Component: XXXX&lt;br /&gt;
* Task Row Component: XXX&lt;br /&gt;
* Action Buttons: Each action button will trigger a specific function for managing student tasks.&lt;br /&gt;
&lt;br /&gt;
c. &amp;lt;b&amp;gt;Course Assignment Component Structure:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Main Table Component: XXXX&lt;br /&gt;
* Task Row Component: XXXX&lt;br /&gt;
* Action Buttons: Each action button will trigger a specific function for managing student tasks.&lt;br /&gt;
&lt;br /&gt;
d. &amp;lt;b&amp;gt;State Management:&amp;lt;/b&amp;gt; React’s useState for managing mocked JSON data&lt;br /&gt;
&lt;br /&gt;
e. &amp;lt;b&amp;gt;Styling:&amp;lt;/b&amp;gt; CSS (for responsive and accessible design)&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;The UI refinements adhere to the following design principles:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Consistency:&amp;lt;/b&amp;gt; Maintain uniform typography, formatting, and spacing across all tables.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Readability:&amp;lt;/b&amp;gt; Use a structured layout with clear distinctions between elements.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Simplicity:&amp;lt;/b&amp;gt; Remove unnecessary elements to reduce visual clutter.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Reusability&amp;lt;/b&amp;gt; Standardize table components to avoid redundancy.&lt;br /&gt;
&lt;br /&gt;
== UI Components and Updates ==&lt;br /&gt;
&lt;br /&gt;
=== Student Task Table === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;a. Originally Planned View:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The Student Task table was initially intended to present tasks associated with each student, featuring columns for Assignment, Course, Topic, Current Stage, Review Grade, Stage Deadline and Publishing rights. However, due to UI inconsistencies, this layout was revised to adhere to better formatting and design principles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;b. Updated View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Improved Formatting:&amp;lt;/b&amp;gt; Enhanced text formatting and alignment to ensure consistency.&lt;br /&gt;
* &amp;lt;b&amp;gt;Uniform Styling:&amp;lt;/b&amp;gt; Applied uniform styling to table rows for better readability.&lt;br /&gt;
* &amp;lt;b&amp;gt;Enhanced Clarity:&amp;lt;/b&amp;gt; Improved date formatting and clearer row spacing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Course Assignment Table === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;a. Originally Planned View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Course Assignment table was designed to showcase assignments within a course, with columns for assignment Name, Creation Date, Updated Date and Actions. Similar to the Student Task table, it was adjusted to improve clarity and remove unnecessary elements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;b. Updated View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Refined Structure:&amp;lt;/b&amp;gt; Removed redundant columns and ensured concise information display.&lt;br /&gt;
* &amp;lt;b&amp;gt;Improved Date Formatting:&amp;lt;/b&amp;gt; Dates are now displayed in a standardized format for better understanding.&lt;br /&gt;
* &amp;lt;b&amp;gt;Simplified Actions:&amp;lt;/b&amp;gt; Actions like editing and deleting assignments are now more clearly defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentTask.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
This pull request focuses on reimplementing and addressing several UI improvements and bug fixes across two key areas: PR-76 (Course Assignment Table) and PR-52 (Student Task Table). The changes aim to enhance the UI by following design guidelines, improving table functionality, and ensuring consistency across the application. Key adjustments include proper formatting, the removal of unnecessary elements, and layout fixes after merging.&lt;br /&gt;
&lt;br /&gt;
=== PR-52: Student Task Table ===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Standardized Table Component:&amp;lt;/b&amp;gt; Replaced the custom table compnent with a common one for consistency across pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask CommonTable.jpg |500px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Text Formatting:&amp;lt;/b&amp;gt; Table headers and content now adhere to consistent design guidelines.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask TextFormat.jpg |600px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Tooltip Integration:&amp;lt;/b&amp;gt; Added info icons with tooltips for additional context where necessary.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask InfoIcon.jpg |400px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Date Formatting:&amp;lt;/b&amp;gt; Improved readability of dates with clear formatting.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask DateFormat.jpg |200px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PR-76: Course Assignment Table ===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Global Search Bar:&amp;lt;/b&amp;gt; Disabled to simplify UI.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment DisableSearchBar.jpg |400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Date Formatting:&amp;lt;/b&amp;gt; Standardized date formatting across the table. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentAssignment DateFormat.jpg |300px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Pagination Updates:&amp;lt;/b&amp;gt; Enhanced pagination for better navigation when listing multiple assignments.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment Pagination.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Column Removals:&amp;lt;/b&amp;gt; Removed unnecessary columns that were causing clutter.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentAssignment Cols.jpg |600px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
=== Key Component Implementations ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Student Task Page:&amp;lt;/b&amp;gt; 'pages/StudentTasks/StudentTasks.tsx'&lt;br /&gt;
&lt;br /&gt;
* Import Common Table Component and Formatters&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
import Table from &amp;quot;components/Table/Table&amp;quot;;&lt;br /&gt;
import { formatDate, capitalizeFirstWord } from &amp;quot;utils/dataFormatter&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Render Common Table Componnet&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
      &amp;lt;div className={styles.mainContent}&amp;gt;&lt;br /&gt;
          &amp;lt;div className={styles.tableWrapper}&amp;gt;&lt;br /&gt;
            &amp;lt;Table&lt;br /&gt;
              data={filteredAssignments}&lt;br /&gt;
              columns={filteredColumns}&lt;br /&gt;
              showGlobalFilter={false}&lt;br /&gt;
              showColumnFilter={false}&lt;br /&gt;
              showPagination={false}&lt;br /&gt;
              tableSize={{ span: 12, offset: 0 }}&lt;br /&gt;
              headingComments={{&lt;br /&gt;
                &amp;quot;Stage deadline&amp;quot;: &amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;,&lt;br /&gt;
                &amp;quot;Publishing rights&amp;quot;: &amp;quot;Grant publishing rights&amp;quot;,&lt;br /&gt;
              }}&lt;br /&gt;
            /&amp;gt;&lt;br /&gt;
         &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Course Assignment Table:&amp;lt;/b&amp;gt; 'pages/Courses/CourseAssignments.tsx'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Common Table Component:&amp;lt;/b&amp;gt; 'components/Table.tsx'&lt;br /&gt;
&lt;br /&gt;
=== Utility Components and Functions ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Data Formatter Functions('src/utils/dataFormatter.ts'):&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* capitalizeFirstWord()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
export const capitalizeFirstWord = (str: string) =&amp;gt; {&lt;br /&gt;
    return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();&lt;br /&gt;
};    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* formatDate()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
export const formatDate = (dateString: string): string =&amp;gt; {&lt;br /&gt;
    const date = new Date(dateString);&lt;br /&gt;
    const options: Intl.DateTimeFormatOptions = {&lt;br /&gt;
        month: &amp;quot;short&amp;quot;,&lt;br /&gt;
        day: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        year: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        hour: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        minute: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        hour12: true,&lt;br /&gt;
    };&lt;br /&gt;
    return date.toLocaleString(&amp;quot;en-US&amp;quot;, options);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== List of Files Added/Updated ==&lt;br /&gt;
&lt;br /&gt;
=== Frontend Component Files===&lt;br /&gt;
* Implements the main UI for view student task: &amp;lt;b&amp;gt;`src/pages/StudentTasks/StudentTasks.tsx`&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Updates the CSS styles for view student task: &amp;lt;b&amp;gt;`src/pages/StudentTasks/StudentTasks.css`:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Implements the main UI for view course assignment: &amp;lt;b&amp;gt;`src/pages/Courses/CourseAssignments.tsx`:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Updates the common Table component: &amp;lt;b&amp;gt;`src/components/Table/Table.tsx`:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Core Functionalities===&lt;br /&gt;
Data Formatter Functions within &amp;lt;b&amp;gt;`src/utils/dataFormatter.ts`:&amp;lt;/b&amp;gt; &lt;br /&gt;
* &amp;lt;b&amp;gt;`capitalizeFirstWord `&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;`formatDate`&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table Structure:&lt;br /&gt;
* Course Assignment Table: &amp;lt;b&amp;gt;[Name, Creation date, Updated date, Actions]&amp;lt;/b&amp;gt;&lt;br /&gt;
* Student Task Table: &amp;lt;b&amp;gt;[Assignment Course, Topic, Current state, Review grade, Publishing rights]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. UI Enhancements ===&lt;br /&gt;
* Improved &amp;lt;b&amp;gt;pagination&amp;lt;/b&amp;gt; functionality.&lt;br /&gt;
* Integrated &amp;lt;b&amp;gt;Common Table Component&amp;lt;/b&amp;gt;.&lt;br /&gt;
* Updated &amp;lt;b&amp;gt;table styling and &amp;lt;b&amp;gt;standardized text formatting&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
== Pull Request ==&lt;br /&gt;
&lt;br /&gt;
Track our [https://github.com/expertiza/reimplementation-front-end/pull/88 PR] history here.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This project successfully enhances the UI consistency and usability of the Expertiza system by refining the Student Task Table (PR-52) and the Course Assignment Table (PR-76). By aligning the components with standardized design guidelines, we have improved text formatting, table structure, pagination, and overall user experience. The removal of unnecessary elements and the implementation of proper formatting ensure a cleaner and more intuitive interface. These improvements contribute to a more seamless and accessible system for users, making navigation and interaction more efficient.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
* Dynamic Table Customization: Allow users to customize table views by enabling or disabling specific columns based on their preferences.&lt;br /&gt;
&lt;br /&gt;
* Advanced Filtering &amp;amp; Sorting: Implement more robust filtering options and multi-column sorting to improve data organization.&lt;br /&gt;
&lt;br /&gt;
* Real-time Data Updates: Integrate WebSocket or polling mechanisms to update table data in real-time without requiring page refreshes.&lt;br /&gt;
&lt;br /&gt;
* Mobile Responsiveness: Improve the UI layout to provide a better experience on mobile and tablet devices.&lt;br /&gt;
&lt;br /&gt;
== Project Mentor ==&lt;br /&gt;
&lt;br /&gt;
* Anvitha Reddy Gutha &amp;lt;agutha@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
&lt;br /&gt;
* Chinmay Nayak &amp;lt;cnayak@ncsu.edu&amp;gt;&lt;br /&gt;
* Joannes Koomson &amp;lt;jokoomso@ncsu.edu&amp;gt;&lt;br /&gt;
* Jing Huang &amp;lt;jhuang42@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2522._Enhancing_UI_Consistency_in_Expertiza_1&amp;diff=161785</id>
		<title>CSC/ECE 517 Spring 2025 - E2522. Enhancing UI Consistency in Expertiza 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2522._Enhancing_UI_Consistency_in_Expertiza_1&amp;diff=161785"/>
		<updated>2025-03-23T05:03:24Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: Adding Team Members&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza platform is an open-source tool used for managing peer reviews, team collaborations, and project-based learning. In this project, our goal was to enhance the UI consistency and usability by refining key tables and UI components to meet modern design standards. The primary focus was on the Student Task Table and Course Assignment Table, aligning them with best practices in usability and design.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Platform Overview and Prior Work ==&lt;br /&gt;
&lt;br /&gt;
=== Expertiza Overview ===&lt;br /&gt;
&lt;br /&gt;
Expertiza is a widely used platform for conducting peer reviews and managing course assignments. It supports various task types, including surveys, evaluations, and team collaborations, helping instructors and students achieve better learning outcomes.&lt;br /&gt;
&lt;br /&gt;
=== Previous PR Highlights ===&lt;br /&gt;
&lt;br /&gt;
Our work builds upon prior UI improvements made in the following pull request&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; E2446: Implement Front End for Student Task List #52]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Introduced an initial UI for managing and displaying student tasks.&lt;br /&gt;
&lt;br /&gt;
* Reference [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2446_Implement_Front_End_for_Student_Task_List E2446: Implement Front End for Student Task List]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentTask(PR52).jpeg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; [https://github.com/expertiza/reimplementation-front-end/pull/76 E2491. View Assignments in Courses View #76]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Focused on refining the UI for course assignments.&lt;br /&gt;
&lt;br /&gt;
* Reference: E2491: View Assignments in Courses View&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment(PR76).jpeg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
Prior UI implementations for the Student Task Table and Course Assignment Table lacked consistency and usability, making it difficult to navigate and use effectively. The goal of this project is to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Key Objetives&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Standardizing table components for improved reusability.&lt;br /&gt;
&lt;br /&gt;
* Enhancing text formatting, pagination, and search functionality.&lt;br /&gt;
&lt;br /&gt;
* Streamlining the UI by removing unnecessary elements and improving clarity.&lt;br /&gt;
&lt;br /&gt;
== Technologies ==&lt;br /&gt;
&lt;br /&gt;
a. &amp;lt;b&amp;gt;Frontend:&amp;lt;/b&amp;gt; React, TypeScript&lt;br /&gt;
&lt;br /&gt;
b. &amp;lt;b&amp;gt;Student Task Component Structure:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Main Table Component: XXXX&lt;br /&gt;
* Task Row Component: XXX&lt;br /&gt;
* Action Buttons: Each action button will trigger a specific function for managing student tasks.&lt;br /&gt;
&lt;br /&gt;
c. &amp;lt;b&amp;gt;Course Assignment Component Structure:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Main Table Component: XXXX&lt;br /&gt;
* Task Row Component: XXXX&lt;br /&gt;
* Action Buttons: Each action button will trigger a specific function for managing student tasks.&lt;br /&gt;
&lt;br /&gt;
d. &amp;lt;b&amp;gt;State Management:&amp;lt;/b&amp;gt; React’s useState for managing mocked JSON data&lt;br /&gt;
&lt;br /&gt;
e. &amp;lt;b&amp;gt;Styling:&amp;lt;/b&amp;gt; CSS (for responsive and accessible design)&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;The UI refinements adhere to the following design principles:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Consistency:&amp;lt;/b&amp;gt; Maintain uniform typography, formatting, and spacing across all tables.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Readability:&amp;lt;/b&amp;gt; Use a structured layout with clear distinctions between elements.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Simplicity:&amp;lt;/b&amp;gt; Remove unnecessary elements to reduce visual clutter.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Reusability&amp;lt;/b&amp;gt; Standardize table components to avoid redundancy.&lt;br /&gt;
&lt;br /&gt;
== UI Components and Updates ==&lt;br /&gt;
&lt;br /&gt;
=== Student Task Table === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;a. Originally Planned View:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The Student Task table was initially intended to present tasks associated with each student, featuring columns for Assignment, Course, Topic, Current Stage, Review Grade, Stage Deadline and Publishing rights. However, due to UI inconsistencies, this layout was revised to adhere to better formatting and design principles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;b. Updated View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Improved Formatting:&amp;lt;/b&amp;gt; Enhanced text formatting and alignment to ensure consistency.&lt;br /&gt;
* &amp;lt;b&amp;gt;Uniform Styling:&amp;lt;/b&amp;gt; Applied uniform styling to table rows for better readability.&lt;br /&gt;
* &amp;lt;b&amp;gt;Enhanced Clarity:&amp;lt;/b&amp;gt; Improved date formatting and clearer row spacing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Course Assignment Table === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;a. Originally Planned View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Course Assignment table was designed to showcase assignments within a course, with columns for assignment Name, Creation Date, Updated Date and Actions. Similar to the Student Task table, it was adjusted to improve clarity and remove unnecessary elements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;b. Updated View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Refined Structure:&amp;lt;/b&amp;gt; Removed redundant columns and ensured concise information display.&lt;br /&gt;
* &amp;lt;b&amp;gt;Improved Date Formatting:&amp;lt;/b&amp;gt; Dates are now displayed in a standardized format for better understanding.&lt;br /&gt;
* &amp;lt;b&amp;gt;Simplified Actions:&amp;lt;/b&amp;gt; Actions like editing and deleting assignments are now more clearly defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentTask.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
This pull request focuses on reimplementing and addressing several UI improvements and bug fixes across two key areas: PR-76 (Course Assignment Table) and PR-52 (Student Task Table). The changes aim to enhance the UI by following design guidelines, improving table functionality, and ensuring consistency across the application. Key adjustments include proper formatting, the removal of unnecessary elements, and layout fixes after merging.&lt;br /&gt;
&lt;br /&gt;
=== PR-52: Student Task Table ===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Standardized Table Component:&amp;lt;/b&amp;gt; Replaced the custom table compnent with a common one for consistency across pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask CommonTable.jpg |500px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Text Formatting:&amp;lt;/b&amp;gt; Table headers and content now adhere to consistent design guidelines.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask TextFormat.jpg |600px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Tooltip Integration:&amp;lt;/b&amp;gt; Added info icons with tooltips for additional context where necessary.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask InfoIcon.jpg |400px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Date Formatting:&amp;lt;/b&amp;gt; Improved readability of dates with clear formatting.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask DateFormat.jpg |200px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PR-76: Course Assignment Table ===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Global Search Bar:&amp;lt;/b&amp;gt; Disabled to simplify UI.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment DisableSearchBar.jpg |400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Date Formatting:&amp;lt;/b&amp;gt; Standardized date formatting across the table. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentAssignment DateFormat.jpg |300px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Pagination Updates:&amp;lt;/b&amp;gt; Enhanced pagination for better navigation when listing multiple assignments.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment Pagination.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Column Removals:&amp;lt;/b&amp;gt; Removed unnecessary columns that were causing clutter.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentAssignment Cols.jpg |600px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
=== Key Component Implementations ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Student Task Page:&amp;lt;/b&amp;gt; 'pages/StudentTasks/StudentTasks.tsx'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Course Assignment Table:&amp;lt;/b&amp;gt; 'pages/Courses/CourseAssignments.tsx'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Common Table Component:&amp;lt;/b&amp;gt; 'components/Table.tsx'&lt;br /&gt;
&lt;br /&gt;
=== Utility Components and Functions ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Data Formatter Functions('src/utils/dataFormatter.ts'):&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* capitalizeFirstWord()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
export const capitalizeFirstWord = (str: string) =&amp;gt; {&lt;br /&gt;
    return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();&lt;br /&gt;
};    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* formatDate()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
export const formatDate = (dateString: string): string =&amp;gt; {&lt;br /&gt;
    const date = new Date(dateString);&lt;br /&gt;
    const options: Intl.DateTimeFormatOptions = {&lt;br /&gt;
        month: &amp;quot;short&amp;quot;,&lt;br /&gt;
        day: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        year: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        hour: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        minute: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        hour12: true,&lt;br /&gt;
    };&lt;br /&gt;
    return date.toLocaleString(&amp;quot;en-US&amp;quot;, options);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== List of Files Added/Updated ==&lt;br /&gt;
&lt;br /&gt;
=== Frontend Component Files===&lt;br /&gt;
* Implements the main UI for view student task: &amp;lt;b&amp;gt;`src/pages/StudentTasks/StudentTasks.tsx`&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Updates the CSS styles for view student task: &amp;lt;b&amp;gt;`src/pages/StudentTasks/StudentTasks.css`:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Implements the main UI for view course assignment: &amp;lt;b&amp;gt;`src/pages/Courses/CourseAssignments.tsx`:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Updates the common Table component: &amp;lt;b&amp;gt;`src/components/Table/Table.tsx`:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Core Functionalities===&lt;br /&gt;
Data Formatter Functions within &amp;lt;b&amp;gt;`src/utils/dataFormatter.ts`:&amp;lt;/b&amp;gt; &lt;br /&gt;
* &amp;lt;b&amp;gt;`capitalizeFirstWord `&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;`formatDate`&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table Structure:&lt;br /&gt;
* Course Assignment Table: &amp;lt;b&amp;gt;[Name, Creation date, Updated date, Actions]&amp;lt;/b&amp;gt;&lt;br /&gt;
* Student Task Table: &amp;lt;b&amp;gt;[Assignment Course, Topic, Current state, Review grade, Publishing rights]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. UI Enhancements ===&lt;br /&gt;
* Improved &amp;lt;b&amp;gt;pagination&amp;lt;/b&amp;gt; functionality.&lt;br /&gt;
* Integrated &amp;lt;b&amp;gt;Common Table Component&amp;lt;/b&amp;gt;.&lt;br /&gt;
* Updated &amp;lt;b&amp;gt;table styling and &amp;lt;b&amp;gt;standardized text formatting&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
== Pull Request ==&lt;br /&gt;
&lt;br /&gt;
Track our [https://github.com/expertiza/reimplementation-front-end/pull/88 PR] history here.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This project successfully enhances the UI consistency and usability of the Expertiza system by refining the Student Task Table (PR-52) and the Course Assignment Table (PR-76). By aligning the components with standardized design guidelines, we have improved text formatting, table structure, pagination, and overall user experience. The removal of unnecessary elements and the implementation of proper formatting ensure a cleaner and more intuitive interface. These improvements contribute to a more seamless and accessible system for users, making navigation and interaction more efficient.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
== Project Mentor ==&lt;br /&gt;
&lt;br /&gt;
* Anvitha Reddy Gutha &amp;lt;agutha@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;br /&gt;
&lt;br /&gt;
* Chinmay Nayak &amp;lt;cnayak@ncsu.edu&amp;gt;&lt;br /&gt;
* Joannes Koomson &amp;lt;jokoomso@ncsu.edu&amp;gt;&lt;br /&gt;
* Jing Huang &amp;lt;jhuang42@ncsu.edu&amp;gt;&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2522._Enhancing_UI_Consistency_in_Expertiza_1&amp;diff=161781</id>
		<title>CSC/ECE 517 Spring 2025 - E2522. Enhancing UI Consistency in Expertiza 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2522._Enhancing_UI_Consistency_in_Expertiza_1&amp;diff=161781"/>
		<updated>2025-03-23T04:59:56Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza platform is an open-source tool used for managing peer reviews, team collaborations, and project-based learning. In this project, our goal was to enhance the UI consistency and usability by refining key tables and UI components to meet modern design standards. The primary focus was on the Student Task Table and Course Assignment Table, aligning them with best practices in usability and design.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Platform Overview and Prior Work ==&lt;br /&gt;
&lt;br /&gt;
=== Expertiza Overview ===&lt;br /&gt;
&lt;br /&gt;
Expertiza is a widely used platform for conducting peer reviews and managing course assignments. It supports various task types, including surveys, evaluations, and team collaborations, helping instructors and students achieve better learning outcomes.&lt;br /&gt;
&lt;br /&gt;
=== Previous PR Highlights ===&lt;br /&gt;
&lt;br /&gt;
Our work builds upon prior UI improvements made in the following pull request&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; E2446: Implement Front End for Student Task List #52]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Introduced an initial UI for managing and displaying student tasks.&lt;br /&gt;
&lt;br /&gt;
* Reference [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2446_Implement_Front_End_for_Student_Task_List E2446: Implement Front End for Student Task List]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentTask(PR52).jpeg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; [https://github.com/expertiza/reimplementation-front-end/pull/76 E2491. View Assignments in Courses View #76]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Focused on refining the UI for course assignments.&lt;br /&gt;
&lt;br /&gt;
* Reference: E2491: View Assignments in Courses View&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment(PR76).jpeg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
Prior UI implementations for the Student Task Table and Course Assignment Table lacked consistency and usability, making it difficult to navigate and use effectively. The goal of this project is to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Key Objetives&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Standardizing table components for improved reusability.&lt;br /&gt;
&lt;br /&gt;
* Enhancing text formatting, pagination, and search functionality.&lt;br /&gt;
&lt;br /&gt;
* Streamlining the UI by removing unnecessary elements and improving clarity.&lt;br /&gt;
&lt;br /&gt;
== Technologies ==&lt;br /&gt;
&lt;br /&gt;
a. &amp;lt;b&amp;gt;Frontend:&amp;lt;/b&amp;gt; React, TypeScript&lt;br /&gt;
&lt;br /&gt;
b. &amp;lt;b&amp;gt;Student Task Component Structure:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Main Table Component: XXXX&lt;br /&gt;
* Task Row Component: XXX&lt;br /&gt;
* Action Buttons: Each action button will trigger a specific function for managing student tasks.&lt;br /&gt;
&lt;br /&gt;
c. &amp;lt;b&amp;gt;Course Assignment Component Structure:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Main Table Component: XXXX&lt;br /&gt;
* Task Row Component: XXXX&lt;br /&gt;
* Action Buttons: Each action button will trigger a specific function for managing student tasks.&lt;br /&gt;
&lt;br /&gt;
d. &amp;lt;b&amp;gt;State Management:&amp;lt;/b&amp;gt; React’s useState for managing mocked JSON data&lt;br /&gt;
&lt;br /&gt;
e. &amp;lt;b&amp;gt;Styling:&amp;lt;/b&amp;gt; CSS (for responsive and accessible design)&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;The UI refinements adhere to the following design principles:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Consistency:&amp;lt;/b&amp;gt; Maintain uniform typography, formatting, and spacing across all tables.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Readability:&amp;lt;/b&amp;gt; Use a structured layout with clear distinctions between elements.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Simplicity:&amp;lt;/b&amp;gt; Remove unnecessary elements to reduce visual clutter.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Reusability&amp;lt;/b&amp;gt; Standardize table components to avoid redundancy.&lt;br /&gt;
&lt;br /&gt;
== UI Components and Updates ==&lt;br /&gt;
&lt;br /&gt;
=== Student Task Table === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;a. Originally Planned View:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The Student Task table was initially intended to present tasks associated with each student, featuring columns for Assignment, Course, Topic, Current Stage, Review Grade, Stage Deadline and Publishing rights. However, due to UI inconsistencies, this layout was revised to adhere to better formatting and design principles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;b. Updated View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Improved Formatting:&amp;lt;/b&amp;gt; Enhanced text formatting and alignment to ensure consistency.&lt;br /&gt;
* &amp;lt;b&amp;gt;Uniform Styling:&amp;lt;/b&amp;gt; Applied uniform styling to table rows for better readability.&lt;br /&gt;
* &amp;lt;b&amp;gt;Enhanced Clarity:&amp;lt;/b&amp;gt; Improved date formatting and clearer row spacing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Course Assignment Table === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;a. Originally Planned View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Course Assignment table was designed to showcase assignments within a course, with columns for assignment Name, Creation Date, Updated Date and Actions. Similar to the Student Task table, it was adjusted to improve clarity and remove unnecessary elements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;b. Updated View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Refined Structure:&amp;lt;/b&amp;gt; Removed redundant columns and ensured concise information display.&lt;br /&gt;
* &amp;lt;b&amp;gt;Improved Date Formatting:&amp;lt;/b&amp;gt; Dates are now displayed in a standardized format for better understanding.&lt;br /&gt;
* &amp;lt;b&amp;gt;Simplified Actions:&amp;lt;/b&amp;gt; Actions like editing and deleting assignments are now more clearly defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentTask.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
This pull request focuses on reimplementing and addressing several UI improvements and bug fixes across two key areas: PR-76 (Course Assignment Table) and PR-52 (Student Task Table). The changes aim to enhance the UI by following design guidelines, improving table functionality, and ensuring consistency across the application. Key adjustments include proper formatting, the removal of unnecessary elements, and layout fixes after merging.&lt;br /&gt;
&lt;br /&gt;
=== PR-52: Student Task Table ===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Standardized Table Component:&amp;lt;/b&amp;gt; Replaced the custom table compnent with a common one for consistency across pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask CommonTable.jpg |500px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Text Formatting:&amp;lt;/b&amp;gt; Table headers and content now adhere to consistent design guidelines.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask TextFormat.jpg |600px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Tooltip Integration:&amp;lt;/b&amp;gt; Added info icons with tooltips for additional context where necessary.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask InfoIcon.jpg |400px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Date Formatting:&amp;lt;/b&amp;gt; Improved readability of dates with clear formatting.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask DateFormat.jpg |200px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PR-76: Course Assignment Table ===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Global Search Bar:&amp;lt;/b&amp;gt; Disabled to simplify UI.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment DisableSearchBar.jpg |400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Date Formatting:&amp;lt;/b&amp;gt; Standardized date formatting across the table. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentAssignment DateFormat.jpg |300px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Pagination Updates:&amp;lt;/b&amp;gt; Enhanced pagination for better navigation when listing multiple assignments.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment Pagination.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Column Removals:&amp;lt;/b&amp;gt; Removed unnecessary columns that were causing clutter.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentAssignment Cols.jpg |600px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
=== Key Component Implementations ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Student Task Page:&amp;lt;/b&amp;gt; 'pages/StudentTasks/StudentTasks.tsx'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Course Assignment Table:&amp;lt;/b&amp;gt; 'pages/Courses/CourseAssignments.tsx'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Common Table Component:&amp;lt;/b&amp;gt; 'components/Table.tsx'&lt;br /&gt;
&lt;br /&gt;
=== Utility Components and Functions ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Data Formatter Functions('src/utils/dataFormatter.ts'):&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* capitalizeFirstWord()&lt;br /&gt;
&lt;br /&gt;
* formatDate()&lt;br /&gt;
&lt;br /&gt;
== List of Files Added/Updated ==&lt;br /&gt;
&lt;br /&gt;
=== Frontend Component Files===&lt;br /&gt;
Implements the main UI for view student task: &amp;lt;b&amp;gt;`src/pages/StudentTasks/StudentTasks.tsx`&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Set up &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Updates the CSS styles for view student task: &amp;lt;b&amp;gt;`src/pages/StudentTasks/StudentTasks.css`:&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Implements the main UI for view course assignment: &amp;lt;b&amp;gt;`src/pages/Courses/CourseAssignments.tsx`:&amp;lt;/b&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Updates the common Table component: &amp;lt;b&amp;gt;`src/components/Table/Table.tsx`:&amp;lt;/b&amp;gt; &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Core Functionalities===&lt;br /&gt;
Data Formatter Functions within &amp;lt;b&amp;gt;`src/utils/dataFormatter.ts`:&amp;lt;/b&amp;gt; &lt;br /&gt;
* &amp;lt;b&amp;gt;`capitalizeFirstWord `&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
export const capitalizeFirstWord = (str: string) =&amp;gt; {&lt;br /&gt;
    return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();&lt;br /&gt;
};    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;`formatDate`&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
export const formatDate = (dateString: string): string =&amp;gt; {&lt;br /&gt;
    const date = new Date(dateString);&lt;br /&gt;
    const options: Intl.DateTimeFormatOptions = {&lt;br /&gt;
        month: &amp;quot;short&amp;quot;,&lt;br /&gt;
        day: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        year: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        hour: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        minute: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        hour12: true,&lt;br /&gt;
    };&lt;br /&gt;
    return date.toLocaleString(&amp;quot;en-US&amp;quot;, options);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table Structure:&lt;br /&gt;
* Course Assignment Table: &amp;lt;b&amp;gt;[Name, Creation date, Updated date, Actions]&amp;lt;/b&amp;gt;&lt;br /&gt;
* Student Task Table: &amp;lt;b&amp;gt;[Assignment Course, Topic, Current state, Review grade, Publishing rights]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. UI Enhancements ===&lt;br /&gt;
* Improved &amp;lt;b&amp;gt;pagination&amp;lt;/b&amp;gt; functionality.&lt;br /&gt;
* Integrated &amp;lt;b&amp;gt;Common Table Component&amp;lt;/b&amp;gt;.&lt;br /&gt;
* Updated &amp;lt;b&amp;gt;table styling and &amp;lt;b&amp;gt;standardized text formatting&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
== Pull Request ==&lt;br /&gt;
&lt;br /&gt;
Track our [https://github.com/expertiza/reimplementation-front-end/pull/88 PR] history here.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This project successfully enhances the UI consistency and usability of the Expertiza system by refining the Student Task Table (PR-52) and the Course Assignment Table (PR-76). By aligning the components with standardized design guidelines, we have improved text formatting, table structure, pagination, and overall user experience. The removal of unnecessary elements and the implementation of proper formatting ensure a cleaner and more intuitive interface. These improvements contribute to a more seamless and accessible system for users, making navigation and interaction more efficient.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
== Project Mentor ==&lt;br /&gt;
&lt;br /&gt;
* Anvitha Reddy Gutha &amp;lt;agutha@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2522._Enhancing_UI_Consistency_in_Expertiza_1&amp;diff=161776</id>
		<title>CSC/ECE 517 Spring 2025 - E2522. Enhancing UI Consistency in Expertiza 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2522._Enhancing_UI_Consistency_in_Expertiza_1&amp;diff=161776"/>
		<updated>2025-03-23T04:54:25Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: Added Conclusion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza platform is an open-source tool used for managing peer reviews, team collaborations, and project-based learning. In this project, our goal was to enhance the UI consistency and usability by refining key tables and UI components to meet modern design standards. The primary focus was on the Student Task Table and Course Assignment Table, aligning them with best practices in usability and design.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Platform Overview and Prior Work ==&lt;br /&gt;
&lt;br /&gt;
=== Expertiza Overview ===&lt;br /&gt;
&lt;br /&gt;
Expertiza is a widely used platform for conducting peer reviews and managing course assignments. It supports various task types, including surveys, evaluations, and team collaborations, helping instructors and students achieve better learning outcomes.&lt;br /&gt;
&lt;br /&gt;
=== Previous PR Highlights ===&lt;br /&gt;
&lt;br /&gt;
Our work builds upon prior UI improvements made in the following pull request&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; E2446: Implement Front End for Student Task List #52]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Introduced an initial UI for managing and displaying student tasks.&lt;br /&gt;
&lt;br /&gt;
* Reference [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2446_Implement_Front_End_for_Student_Task_List E2446: Implement Front End for Student Task List]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentTask(PR52).jpeg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; [https://github.com/expertiza/reimplementation-front-end/pull/76 E2491. View Assignments in Courses View #76]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Focused on refining the UI for course assignments.&lt;br /&gt;
&lt;br /&gt;
* Reference: E2491: View Assignments in Courses View&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment(PR76).jpeg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
Prior UI implementations for the Student Task Table and Course Assignment Table lacked consistency and usability, making it difficult to navigate and use effectively. The goal of this project is to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Key Objetives&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Standardizing table components for improved reusability.&lt;br /&gt;
&lt;br /&gt;
* Enhancing text formatting, pagination, and search functionality.&lt;br /&gt;
&lt;br /&gt;
* Streamlining the UI by removing unnecessary elements and improving clarity.&lt;br /&gt;
&lt;br /&gt;
== Technologies ==&lt;br /&gt;
&lt;br /&gt;
a. &amp;lt;b&amp;gt;Frontend:&amp;lt;/b&amp;gt; React, TypeScript&lt;br /&gt;
&lt;br /&gt;
b. &amp;lt;b&amp;gt;Student Task Component Structure:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Main Table Component: XXXX&lt;br /&gt;
* Task Row Component: XXX&lt;br /&gt;
* Action Buttons: Each action button will trigger a specific function for managing student tasks.&lt;br /&gt;
&lt;br /&gt;
c. &amp;lt;b&amp;gt;Course Assignment Component Structure:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Main Table Component: XXXX&lt;br /&gt;
* Task Row Component: XXXX&lt;br /&gt;
* Action Buttons: Each action button will trigger a specific function for managing student tasks.&lt;br /&gt;
&lt;br /&gt;
d. &amp;lt;b&amp;gt;State Management:&amp;lt;/b&amp;gt; React’s useState for managing mocked JSON data&lt;br /&gt;
&lt;br /&gt;
e. &amp;lt;b&amp;gt;Styling:&amp;lt;/b&amp;gt; CSS (for responsive and accessible design)&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;The UI refinements adhere to the following design principles:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Consistency:&amp;lt;/b&amp;gt; Maintain uniform typography, formatting, and spacing across all tables.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Readability:&amp;lt;/b&amp;gt; Use a structured layout with clear distinctions between elements.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Simplicity:&amp;lt;/b&amp;gt; Remove unnecessary elements to reduce visual clutter.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Reusability&amp;lt;/b&amp;gt; Standardize table components to avoid redundancy.&lt;br /&gt;
&lt;br /&gt;
== UI Components and Updates ==&lt;br /&gt;
&lt;br /&gt;
=== Student Task Table === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;a. Originally Planned View:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The Student Task table was initially intended to present tasks associated with each student, featuring columns for Assignment, Course, Topic, Current Stage, Review Grade, Stage Deadline and Publishing rights. However, due to UI inconsistencies, this layout was revised to adhere to better formatting and design principles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;b. Updated View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Improved Formatting:&amp;lt;/b&amp;gt; Enhanced text formatting and alignment to ensure consistency.&lt;br /&gt;
* &amp;lt;b&amp;gt;Uniform Styling:&amp;lt;/b&amp;gt; Applied uniform styling to table rows for better readability.&lt;br /&gt;
* &amp;lt;b&amp;gt;Enhanced Clarity:&amp;lt;/b&amp;gt; Improved date formatting and clearer row spacing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Course Assignment Table === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;a. Originally Planned View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Course Assignment table was designed to showcase assignments within a course, with columns for assignment Name, Creation Date, Updated Date and Actions. Similar to the Student Task table, it was adjusted to improve clarity and remove unnecessary elements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;b. Updated View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Refined Structure:&amp;lt;/b&amp;gt; Removed redundant columns and ensured concise information display.&lt;br /&gt;
* &amp;lt;b&amp;gt;Improved Date Formatting:&amp;lt;/b&amp;gt; Dates are now displayed in a standardized format for better understanding.&lt;br /&gt;
* &amp;lt;b&amp;gt;Simplified Actions:&amp;lt;/b&amp;gt; Actions like editing and deleting assignments are now more clearly defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentTask.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
This pull request focuses on reimplementing and addressing several UI improvements and bug fixes across two key areas: PR-76 (Course Assignment Table) and PR-52 (Student Task Table). The changes aim to enhance the UI by following design guidelines, improving table functionality, and ensuring consistency across the application. Key adjustments include proper formatting, the removal of unnecessary elements, and layout fixes after merging.&lt;br /&gt;
&lt;br /&gt;
=== PR-52: Student Task Table ===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Standardized Table Component:&amp;lt;/b&amp;gt; Replaced the custom table compnent with a common one for consistency across pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask CommonTable.jpg |500px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Text Formatting:&amp;lt;/b&amp;gt; Table headers and content now adhere to consistent design guidelines.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask TextFormat.jpg |600px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Tooltip Integration:&amp;lt;/b&amp;gt; Added info icons with tooltips for additional context where necessary.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask InfoIcon.jpg |400px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Date Formatting:&amp;lt;/b&amp;gt; Improved readability of dates with clear formatting.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask DateFormat.jpg |200px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PR-76: Course Assignment Table ===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Global Search Bar:&amp;lt;/b&amp;gt; Disabled to simplify UI.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment DisableSearchBar.jpg |400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Date Formatting:&amp;lt;/b&amp;gt; Standardized date formatting across the table. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentAssignment DateFormat.jpg |300px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Pagination Updates:&amp;lt;/b&amp;gt; Enhanced pagination for better navigation when listing multiple assignments.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment Pagination.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Column Removals:&amp;lt;/b&amp;gt; Removed unnecessary columns that were causing clutter.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentAssignment Cols.jpg |600px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
=== Key Component Implementations ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Student Task Page:&amp;lt;/b&amp;gt; 'pages/StudentTasks/StudentTasks.tsx'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Course Assignment Table:&amp;lt;/b&amp;gt; 'pages/Courses/CourseAssignments.tsx'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Common Table Component:&amp;lt;/b&amp;gt; 'components/Table.tsx'&lt;br /&gt;
&lt;br /&gt;
=== Utility Components and Functions ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Data Formatter Functions('src/utils/dataFormatter.ts'):&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* capitalizeFirstWord()&lt;br /&gt;
&lt;br /&gt;
* formatDate()&lt;br /&gt;
&lt;br /&gt;
== List of Files Added/Updated ==&lt;br /&gt;
&lt;br /&gt;
=== Frontend Component Files===&lt;br /&gt;
* &amp;lt;b&amp;gt;`src/pages/StudentTasks/StudentTasks.tsx`:&amp;lt;/b&amp;gt; Implements the main UI for view student task.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
 import React, { useState, useEffect, useCallback } from &amp;quot;react&amp;quot;;&lt;br /&gt;
import { useSelector, useDispatch } from &amp;quot;react-redux&amp;quot;;&lt;br /&gt;
import { useNavigate, Link } from &amp;quot;react-router-dom&amp;quot;;&lt;br /&gt;
import { RootState } from &amp;quot;../../store/store&amp;quot;;&lt;br /&gt;
import useAPI from &amp;quot;hooks/useAPI&amp;quot;;&lt;br /&gt;
import styles from &amp;quot;./StudentTasks.module.css&amp;quot;;&lt;br /&gt;
import StudentTasksBox from &amp;quot;./StudentTasksBox&amp;quot;;&lt;br /&gt;
import testData from &amp;quot;./testData.json&amp;quot;;&lt;br /&gt;
import { CellContext } from &amp;quot;@tanstack/react-table&amp;quot;; // or the correct import for your table library&lt;br /&gt;
import Table from &amp;quot;components/Table/Table&amp;quot;;&lt;br /&gt;
import { formatDate, capitalizeFirstWord } from &amp;quot;utils/dataFormatter&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// Define the types for a single task and the associated course&lt;br /&gt;
type Task = {&lt;br /&gt;
  id: number;&lt;br /&gt;
  assignment: string;&lt;br /&gt;
  course: string;&lt;br /&gt;
  topic: string;&lt;br /&gt;
  currentStage: string;&lt;br /&gt;
  reviewGrade: string | { comment: string };&lt;br /&gt;
  badges: string | boolean;&lt;br /&gt;
  stageDeadline: string;&lt;br /&gt;
  publishingRights: boolean;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Empty props for FC as no props are needed currently&lt;br /&gt;
type Props = {};&lt;br /&gt;
&lt;br /&gt;
// Main functional component for Student Tasks&lt;br /&gt;
const StudentTasks: React.FC = () =&amp;gt; {&lt;br /&gt;
  // State and hooks initialization&lt;br /&gt;
  const participantTasks = testData.participantTasks;&lt;br /&gt;
  const currentUserId = testData.current_user_id;&lt;br /&gt;
  const auth = useSelector((state: RootState) =&amp;gt; state.authentication);&lt;br /&gt;
  const dispatch = useDispatch();&lt;br /&gt;
  const navigate = useNavigate();&lt;br /&gt;
&lt;br /&gt;
  // State to hold tasks&lt;br /&gt;
  const [tasks, setTasks] = useState&amp;lt;Task[]&amp;gt;([]);&lt;br /&gt;
  const exampleDuties = testData.dueTasks;&lt;br /&gt;
  const taskRevisions = testData.revisions;&lt;br /&gt;
  const studentsTeamedWith = testData.studentsTeamedWith;&lt;br /&gt;
&lt;br /&gt;
  useEffect(() =&amp;gt; {&lt;br /&gt;
    if (participantTasks) {&lt;br /&gt;
      const filteredParticipantTasks = participantTasks.filter(&lt;br /&gt;
        (task) =&amp;gt; task.participant_id === currentUserId&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
      const mergedTasks = filteredParticipantTasks.map((task) =&amp;gt; {&lt;br /&gt;
        return {&lt;br /&gt;
          id: task.id,&lt;br /&gt;
          assignment: task.assignment,&lt;br /&gt;
          course: task.course,&lt;br /&gt;
          topic: task.topic || &amp;quot;-&amp;quot;,&lt;br /&gt;
          currentStage: task.current_stage || &amp;quot;Pending&amp;quot;,&lt;br /&gt;
          reviewGrade: task.review_grade || &amp;quot;N/A&amp;quot;,&lt;br /&gt;
          badges: task.badges || &amp;quot;&amp;quot;,&lt;br /&gt;
          stageDeadline: task.stage_deadline ? formatDate(task.stage_deadline) : &amp;quot;No deadline&amp;quot;,&lt;br /&gt;
          publishingRights: task.publishing_rights || false,&lt;br /&gt;
        };&lt;br /&gt;
      });&lt;br /&gt;
      setTasks(mergedTasks);&lt;br /&gt;
    }&lt;br /&gt;
  }, [participantTasks]);&lt;br /&gt;
&lt;br /&gt;
  // Callback to toggle publishing rights&lt;br /&gt;
  const togglePublishingRights = useCallback((id: number) =&amp;gt; {&lt;br /&gt;
    setTasks((prevTasks) =&amp;gt;&lt;br /&gt;
      prevTasks.map((task) =&amp;gt;&lt;br /&gt;
        task.id === id ? { ...task, publishingRights: !task.publishingRights } : task&lt;br /&gt;
      )&lt;br /&gt;
    );&lt;br /&gt;
  }, []);&lt;br /&gt;
&lt;br /&gt;
  type RowData = {&lt;br /&gt;
    assignment: string;&lt;br /&gt;
    course: string;&lt;br /&gt;
    topic: string;&lt;br /&gt;
    currentStage: string;&lt;br /&gt;
    reviewGrade: { comment?: string } | &amp;quot;N/A&amp;quot;;&lt;br /&gt;
    badges?: string;&lt;br /&gt;
    stageDeadline: string;&lt;br /&gt;
    publishingRights: boolean;&lt;br /&gt;
    id: string;&lt;br /&gt;
  };&lt;br /&gt;
  const showBadges = tasks.some((task) =&amp;gt; task.badges);&lt;br /&gt;
  const filteredColumns = [&lt;br /&gt;
    {&lt;br /&gt;
      accessorKey: &amp;quot;assignment&amp;quot;,&lt;br /&gt;
      header: &amp;quot;Assignment&amp;quot;,&lt;br /&gt;
      cell: (info: CellContext&amp;lt;RowData, string&amp;gt;) =&amp;gt; (&lt;br /&gt;
        &amp;lt;Link to={`/student_task_detail/${info.row.original.id}`}&amp;gt;{info.getValue()}&amp;lt;/Link&amp;gt;&lt;br /&gt;
      ),&lt;br /&gt;
    },&lt;br /&gt;
    { accessorKey: &amp;quot;course&amp;quot;, header: &amp;quot;Course&amp;quot; },&lt;br /&gt;
    { accessorKey: &amp;quot;topic&amp;quot;, header: &amp;quot;Topic&amp;quot; },&lt;br /&gt;
    { accessorKey: &amp;quot;currentStage&amp;quot;, header: &amp;quot;Current Stage&amp;quot; },&lt;br /&gt;
    {&lt;br /&gt;
      accessorKey: &amp;quot;reviewGrade&amp;quot;,&lt;br /&gt;
      header: &amp;quot;Review Grade&amp;quot;,&lt;br /&gt;
      cell: (info: CellContext&amp;lt;RowData, RowData[&amp;quot;reviewGrade&amp;quot;]&amp;gt;) =&amp;gt;&lt;br /&gt;
        info.getValue() === &amp;quot;N/A&amp;quot; ? (&lt;br /&gt;
          &amp;quot;NA&amp;quot;&lt;br /&gt;
        ) : (&lt;br /&gt;
          &amp;lt;img&lt;br /&gt;
            src=&amp;quot;assets/icons/info.png&amp;quot;&lt;br /&gt;
            alt=&amp;quot;Review Grade&amp;quot;&lt;br /&gt;
            title={&lt;br /&gt;
              typeof info.row.original.reviewGrade === &amp;quot;object&amp;quot;&lt;br /&gt;
                ? info.row.original.reviewGrade.comment || &amp;quot;&amp;quot;&lt;br /&gt;
                : &amp;quot;&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
          /&amp;gt;&lt;br /&gt;
        ),&lt;br /&gt;
    },&lt;br /&gt;
    ...(showBadges ? [{ accessorKey: &amp;quot;badges&amp;quot;, header: &amp;quot;Badges&amp;quot; }] : []),&lt;br /&gt;
    {&lt;br /&gt;
      accessorKey: &amp;quot;stageDeadline&amp;quot;,&lt;br /&gt;
      header: &amp;quot;Stage Deadline&amp;quot;,&lt;br /&gt;
      // comment: &amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      accessorKey: &amp;quot;publishingRights&amp;quot;,&lt;br /&gt;
      header: &amp;quot;Publishing Rights&amp;quot;,&lt;br /&gt;
      cell: (info: CellContext&amp;lt;RowData, boolean&amp;gt;) =&amp;gt; (&lt;br /&gt;
        &amp;lt;input&lt;br /&gt;
          type=&amp;quot;checkbox&amp;quot;&lt;br /&gt;
          checked={info.getValue()}&lt;br /&gt;
          onChange={() =&amp;gt; togglePublishingRights(Number(info.row.original.id))}&lt;br /&gt;
        /&amp;gt;&lt;br /&gt;
      ),&lt;br /&gt;
      // comment: &amp;quot;Grant publishing rights&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
  ].map(({ header, ...rest }) =&amp;gt; ({&lt;br /&gt;
    ...rest,&lt;br /&gt;
    header: capitalizeFirstWord(header as string),&lt;br /&gt;
  })); // TODO: Format header data, this should be handled by the common Table.&lt;br /&gt;
&lt;br /&gt;
  const filteredAssignments = tasks.map((task) =&amp;gt; ({&lt;br /&gt;
    id: task.id,&lt;br /&gt;
    assignment: task.assignment,&lt;br /&gt;
    course: task.course,&lt;br /&gt;
    topic: capitalizeFirstWord(task.topic) || &amp;quot;-&amp;quot;, // TODO: capitalizeFirstWord should be handle wihtin the common Table&lt;br /&gt;
    currentStage: task.currentStage || &amp;quot;Pending&amp;quot;,&lt;br /&gt;
    reviewGrade: task.reviewGrade || &amp;quot;N/A&amp;quot;,&lt;br /&gt;
    badges: task.badges || &amp;quot;&amp;quot;,&lt;br /&gt;
    stageDeadline: task.stageDeadline || &amp;quot;No deadline&amp;quot;,&lt;br /&gt;
    publishingRights: task.publishingRights || false,&lt;br /&gt;
  }));&lt;br /&gt;
&lt;br /&gt;
  // Component render method&lt;br /&gt;
  return (&lt;br /&gt;
    &amp;lt;div className=&amp;quot;assignments-page&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h1 className=&amp;quot;assignments-title&amp;quot;&amp;gt;Assignments&amp;lt;/h1&amp;gt;&lt;br /&gt;
      &amp;lt;div className={styles.pageLayout}&amp;gt;&lt;br /&gt;
        &amp;lt;aside className={styles.sidebar}&amp;gt;&lt;br /&gt;
          &amp;lt;StudentTasksBox&lt;br /&gt;
            dueTasks={exampleDuties}&lt;br /&gt;
            revisions={taskRevisions}&lt;br /&gt;
            studentsTeamedWith={studentsTeamedWith}&lt;br /&gt;
          /&amp;gt;&lt;br /&gt;
        &amp;lt;/aside&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        {/* Table section */}&lt;br /&gt;
        &amp;lt;div className={styles.mainContent}&amp;gt;&lt;br /&gt;
          &amp;lt;div className={styles.tableWrapper}&amp;gt;&lt;br /&gt;
            &amp;lt;Table&lt;br /&gt;
              data={filteredAssignments}&lt;br /&gt;
              columns={filteredColumns}&lt;br /&gt;
              showGlobalFilter={false}&lt;br /&gt;
              showColumnFilter={false}&lt;br /&gt;
              showPagination={false}&lt;br /&gt;
              tableSize={{ span: 12, offset: 0 }}&lt;br /&gt;
              headingComments={{&lt;br /&gt;
                &amp;quot;Stage deadline&amp;quot;: &amp;quot;You can change 'Preferred Time Zone' in 'Profile' in the banner.&amp;quot;,&lt;br /&gt;
                &amp;quot;Publishing rights&amp;quot;: &amp;quot;Grant publishing rights&amp;quot;,&lt;br /&gt;
              }}&lt;br /&gt;
            /&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      {/* Footer section */}&lt;br /&gt;
      &amp;lt;div className={styles.footer}&amp;gt;&lt;br /&gt;
        &amp;lt;Link&lt;br /&gt;
          to=&amp;quot;https://wiki.expertiza.ncsu.edu/index.php/Expertiza_documentation&amp;quot;&lt;br /&gt;
          className={styles.footerLink}&lt;br /&gt;
        &amp;gt;&lt;br /&gt;
          Help&lt;br /&gt;
        &amp;lt;/Link&amp;gt;&lt;br /&gt;
        &amp;lt;Link to=&amp;quot;https://research.csc.ncsu.edu/efg/expertiza/papers&amp;quot; className={styles.footerLink}&amp;gt;&lt;br /&gt;
          Papers on Expertiza&lt;br /&gt;
        &amp;lt;/Link&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  );&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Export the component for use in other parts of the application&lt;br /&gt;
export default StudentTasks;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;`src/pages/StudentTasks/StudentTasks.css`:&amp;lt;/b&amp;gt; Updates the CSS styles for view student task.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;`src/pages/Courses/CourseAssignments.tsx`:&amp;lt;/b&amp;gt; Implements the main UI for view course assignment.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;`src/components/Table/Table.tsx`:&amp;lt;/b&amp;gt; Updates the common Table component.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Core Functionalities===&lt;br /&gt;
Data Formatter Functions within &amp;lt;b&amp;gt;`src/utils/dataFormatter.ts`:&amp;lt;/b&amp;gt; &lt;br /&gt;
* &amp;lt;b&amp;gt;`capitalizeFirstWord `&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
export const capitalizeFirstWord = (str: string) =&amp;gt; {&lt;br /&gt;
    return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();&lt;br /&gt;
};    &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;`formatDate`&amp;lt;/b&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
export const formatDate = (dateString: string): string =&amp;gt; {&lt;br /&gt;
    const date = new Date(dateString);&lt;br /&gt;
    const options: Intl.DateTimeFormatOptions = {&lt;br /&gt;
        month: &amp;quot;short&amp;quot;,&lt;br /&gt;
        day: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        year: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        hour: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        minute: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        hour12: true,&lt;br /&gt;
    };&lt;br /&gt;
    return date.toLocaleString(&amp;quot;en-US&amp;quot;, options);&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Table Structure:&lt;br /&gt;
* Course Assignment Table: &amp;lt;b&amp;gt;[Name, Creation date, Updated date, Actions]&amp;lt;/b&amp;gt;&lt;br /&gt;
* Student Task Table: &amp;lt;b&amp;gt;[Assignment Course, Topic, Current state, Review grade, Publishing rights]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3. UI Enhancements ===&lt;br /&gt;
* Improved &amp;lt;b&amp;gt;pagination&amp;lt;/b&amp;gt; functionality.&lt;br /&gt;
* Integrated &amp;lt;b&amp;gt;Common Table Component&amp;lt;/b&amp;gt;.&lt;br /&gt;
* Updated &amp;lt;b&amp;gt;table styling and &amp;lt;b&amp;gt;standardized text formatting&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
== Pull Request ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Track our [https://github.com/expertiza/reimplementation-front-end/pull/88 PR] history here.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This project successfully enhances the UI consistency and usability of the Expertiza system by refining the Student Task Table (PR-52) and the Course Assignment Table (PR-76). By aligning the components with standardized design guidelines, we have improved text formatting, table structure, pagination, and overall user experience. The removal of unnecessary elements and the implementation of proper formatting ensure a cleaner and more intuitive interface. These improvements contribute to a more seamless and accessible system for users, making navigation and interaction more efficient.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
== Project Mentor ==&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2522._Enhancing_UI_Consistency_in_Expertiza_1&amp;diff=161770</id>
		<title>CSC/ECE 517 Spring 2025 - E2522. Enhancing UI Consistency in Expertiza 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2522._Enhancing_UI_Consistency_in_Expertiza_1&amp;diff=161770"/>
		<updated>2025-03-23T04:47:52Z</updated>

		<summary type="html">&lt;p&gt;Cnayak: Adding link to the PR history&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
The Expertiza platform is an open-source tool used for managing peer reviews, team collaborations, and project-based learning. In this project, our goal was to enhance the UI consistency and usability by refining key tables and UI components to meet modern design standards. The primary focus was on the Student Task Table and Course Assignment Table, aligning them with best practices in usability and design.&lt;br /&gt;
&lt;br /&gt;
== Expertiza Platform Overview and Prior Work ==&lt;br /&gt;
&lt;br /&gt;
=== Expertiza Overview ===&lt;br /&gt;
&lt;br /&gt;
Expertiza is a widely used platform for conducting peer reviews and managing course assignments. It supports various task types, including surveys, evaluations, and team collaborations, helping instructors and students achieve better learning outcomes.&lt;br /&gt;
&lt;br /&gt;
=== Previous PR Highlights ===&lt;br /&gt;
&lt;br /&gt;
Our work builds upon prior UI improvements made in the following pull request&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; E2446: Implement Front End for Student Task List #52]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Introduced an initial UI for managing and displaying student tasks.&lt;br /&gt;
&lt;br /&gt;
* Reference [https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2024_-_E2446_Implement_Front_End_for_Student_Task_List E2446: Implement Front End for Student Task List]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentTask(PR52).jpeg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; [https://github.com/expertiza/reimplementation-front-end/pull/76 E2491. View Assignments in Courses View #76]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Focused on refining the UI for course assignments.&lt;br /&gt;
&lt;br /&gt;
* Reference: E2491: View Assignments in Courses View&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment(PR76).jpeg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
&lt;br /&gt;
Prior UI implementations for the Student Task Table and Course Assignment Table lacked consistency and usability, making it difficult to navigate and use effectively. The goal of this project is to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Key Objetives&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Standardizing table components for improved reusability.&lt;br /&gt;
&lt;br /&gt;
* Enhancing text formatting, pagination, and search functionality.&lt;br /&gt;
&lt;br /&gt;
* Streamlining the UI by removing unnecessary elements and improving clarity.&lt;br /&gt;
&lt;br /&gt;
== Technologies ==&lt;br /&gt;
&lt;br /&gt;
a. &amp;lt;b&amp;gt;Frontend:&amp;lt;/b&amp;gt; React, TypeScript&lt;br /&gt;
&lt;br /&gt;
b. &amp;lt;b&amp;gt;Student Task Component Structure:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Main Table Component: XXXX&lt;br /&gt;
* Task Row Component: XXX&lt;br /&gt;
* Action Buttons: Each action button will trigger a specific function for managing student tasks.&lt;br /&gt;
&lt;br /&gt;
c. &amp;lt;b&amp;gt;Course Assignment Component Structure:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Main Table Component: XXXX&lt;br /&gt;
* Task Row Component: XXXX&lt;br /&gt;
* Action Buttons: Each action button will trigger a specific function for managing student tasks.&lt;br /&gt;
&lt;br /&gt;
d. &amp;lt;b&amp;gt;State Management:&amp;lt;/b&amp;gt; React’s useState for managing mocked JSON data&lt;br /&gt;
&lt;br /&gt;
e. &amp;lt;b&amp;gt;Styling:&amp;lt;/b&amp;gt; CSS (for responsive and accessible design)&lt;br /&gt;
&lt;br /&gt;
== Design Principles ==&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;The UI refinements adhere to the following design principles:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Consistency:&amp;lt;/b&amp;gt; Maintain uniform typography, formatting, and spacing across all tables.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Readability:&amp;lt;/b&amp;gt; Use a structured layout with clear distinctions between elements.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Simplicity:&amp;lt;/b&amp;gt; Remove unnecessary elements to reduce visual clutter.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Reusability&amp;lt;/b&amp;gt; Standardize table components to avoid redundancy.&lt;br /&gt;
&lt;br /&gt;
== UI Components and Updates ==&lt;br /&gt;
&lt;br /&gt;
=== Student Task Table === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;a. Originally Planned View:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The Student Task table was initially intended to present tasks associated with each student, featuring columns for Assignment, Course, Topic, Current Stage, Review Grade, Stage Deadline and Publishing rights. However, due to UI inconsistencies, this layout was revised to adhere to better formatting and design principles.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;b. Updated View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Improved Formatting:&amp;lt;/b&amp;gt; Enhanced text formatting and alignment to ensure consistency.&lt;br /&gt;
* &amp;lt;b&amp;gt;Uniform Styling:&amp;lt;/b&amp;gt; Applied uniform styling to table rows for better readability.&lt;br /&gt;
* &amp;lt;b&amp;gt;Enhanced Clarity:&amp;lt;/b&amp;gt; Improved date formatting and clearer row spacing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Course Assignment Table === &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;a. Originally Planned View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Course Assignment table was designed to showcase assignments within a course, with columns for assignment Name, Creation Date, Updated Date and Actions. Similar to the Student Task table, it was adjusted to improve clarity and remove unnecessary elements.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;b. Updated View:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Refined Structure:&amp;lt;/b&amp;gt; Removed redundant columns and ensured concise information display.&lt;br /&gt;
* &amp;lt;b&amp;gt;Improved Date Formatting:&amp;lt;/b&amp;gt; Dates are now displayed in a standardized format for better understanding.&lt;br /&gt;
* &amp;lt;b&amp;gt;Simplified Actions:&amp;lt;/b&amp;gt; Actions like editing and deleting assignments are now more clearly defined.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentTask.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Implementation Details ==&lt;br /&gt;
&lt;br /&gt;
This pull request focuses on reimplementing and addressing several UI improvements and bug fixes across two key areas: PR-76 (Course Assignment Table) and PR-52 (Student Task Table). The changes aim to enhance the UI by following design guidelines, improving table functionality, and ensuring consistency across the application. Key adjustments include proper formatting, the removal of unnecessary elements, and layout fixes after merging.&lt;br /&gt;
&lt;br /&gt;
=== PR-52: Student Task Table ===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Standardized Table Component:&amp;lt;/b&amp;gt; Replaced the custom table compnent with a common one for consistency across pages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask CommonTable.jpg |500px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Text Formatting:&amp;lt;/b&amp;gt; Table headers and content now adhere to consistent design guidelines.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask TextFormat.jpg |600px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Tooltip Integration:&amp;lt;/b&amp;gt; Added info icons with tooltips for additional context where necessary.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask InfoIcon.jpg |400px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Date Formatting:&amp;lt;/b&amp;gt; Improved readability of dates with clear formatting.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:E2522 StudentTask DateFormat.jpg |200px|center]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PR-76: Course Assignment Table ===&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Global Search Bar:&amp;lt;/b&amp;gt; Disabled to simplify UI.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment DisableSearchBar.jpg |400px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Date Formatting:&amp;lt;/b&amp;gt; Standardized date formatting across the table. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentAssignment DateFormat.jpg |300px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;Pagination Updates:&amp;lt;/b&amp;gt; Enhanced pagination for better navigation when listing multiple assignments.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 CourseAssignment Pagination.jpg |700px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*&amp;lt;b&amp;gt;Column Removals:&amp;lt;/b&amp;gt; Removed unnecessary columns that were causing clutter.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:E2522 StudentAssignment Cols.jpg |600px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Code Snippets ==&lt;br /&gt;
&lt;br /&gt;
=== Key Component Implementations ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Student Task Page:&amp;lt;/b&amp;gt; 'pages/StudentTasks/StudentTasks.tsx'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Course Assignment Table:&amp;lt;/b&amp;gt; 'pages/Courses/CourseAssignments.tsx'&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Common Table Component:&amp;lt;/b&amp;gt; 'components/Table.tsx'&lt;br /&gt;
&lt;br /&gt;
=== Utility Components and Functions ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Data Formatter Functions('src/utils/dataFormatter.ts'):&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* capitalizeFirstWord()&lt;br /&gt;
&lt;br /&gt;
* formatDate()&lt;br /&gt;
&lt;br /&gt;
== List of Files Added/Updated ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;1. Frontend Component Files&amp;lt;/h3&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;`src/pages/Courses/CourseAssignments.test.tsx`:&amp;lt;/b&amp;gt; Implements the main UI for view course assignment.&lt;br /&gt;
* &amp;lt;b&amp;gt;`src/pages/StudentTasks/StudentTasks.tsx`:&amp;lt;/b&amp;gt; Implements the main UI for view student task.&lt;br /&gt;
* &amp;lt;b&amp;gt;`src/pages/StudentTasks/StudentTasks.css`:&amp;lt;/b&amp;gt; Updates the CSS styles for view student task.&lt;br /&gt;
* &amp;lt;b&amp;gt;`src/components/Table/Table.tsx`:&amp;lt;/b&amp;gt; Updates the common Table component.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;2. Core Functionalities&amp;lt;/h3&amp;gt;&lt;br /&gt;
Data Formatter Functions within &amp;lt;b&amp;gt;`src/utils/dataFormatter.ts`:&amp;lt;/b&amp;gt; &lt;br /&gt;
* &amp;lt;b&amp;gt;`capitalizeFirstWord `&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
export const capitalizeFirstWord = (str: string) =&amp;gt; {&lt;br /&gt;
    return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();&lt;br /&gt;
};    &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;`formatDate`&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
export const formatDate = (dateString: string): string =&amp;gt; {&lt;br /&gt;
    const date = new Date(dateString);&lt;br /&gt;
    const options: Intl.DateTimeFormatOptions = {&lt;br /&gt;
        month: &amp;quot;short&amp;quot;,&lt;br /&gt;
        day: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        year: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        hour: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        minute: &amp;quot;numeric&amp;quot;,&lt;br /&gt;
        hour12: true,&lt;br /&gt;
    };&lt;br /&gt;
    return date.toLocaleString(&amp;quot;en-US&amp;quot;, options);&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
Table Structure:&lt;br /&gt;
* Course Assignment Table: &amp;lt;b&amp;gt;[Name, Creation date, Updated date, Actions]&amp;lt;/b&amp;gt;&lt;br /&gt;
* Student Task Table: &amp;lt;b&amp;gt;[Assignment Course, Topic, Current state, Review grade, Publishing rights]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;3. UI Enhancements&amp;lt;/h3&amp;gt;&lt;br /&gt;
* Improved &amp;lt;b&amp;gt;pagination&amp;lt;/b&amp;gt; functionality.&lt;br /&gt;
* Integrated &amp;lt;b&amp;gt;Common Table Component&amp;lt;/b&amp;gt;.&lt;br /&gt;
* Updated &amp;lt;b&amp;gt;table styling and &amp;lt;b&amp;gt;standardized text formatting&amp;lt;/b&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Test Plan ==&lt;br /&gt;
&lt;br /&gt;
== Demo Video ==&lt;br /&gt;
&lt;br /&gt;
== Pull Request ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Track our [https://github.com/expertiza/reimplementation-front-end/pull/88 PR] history here.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
The project successfully improved the UI consistency of the Expertiza platform by refining key table components. The updates align with modern design principles, improving usability, readability, and overall user experience.&lt;br /&gt;
&lt;br /&gt;
== Future Scope ==&lt;br /&gt;
&lt;br /&gt;
== Project Mentor ==&lt;br /&gt;
&lt;br /&gt;
== Team Members ==&lt;/div&gt;</summary>
		<author><name>Cnayak</name></author>
	</entry>
</feed>