<?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=Ybhatia2</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=Ybhatia2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Ybhatia2"/>
	<updated>2026-08-10T16:22:37Z</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_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165530</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165530"/>
		<updated>2025-04-29T13:25:19Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Part 2: Frontend Files CHanged */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:SS-1.jpg|800px|center|Screenshot of Manage Assignments page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SS-3.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Backend Files Changed ===&lt;br /&gt;
&lt;br /&gt;
* database.yml&lt;br /&gt;
* routes.rb&lt;br /&gt;
* docker-compose.yml&lt;br /&gt;
* Participants Controller&lt;br /&gt;
* Assignments Controller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Frontend Files Changed ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Participants/Participants.tsx&lt;br /&gt;
* src/App.tsx&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal [mailto:magarwa3@ncsu.edu magarwa3@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia [mailto:ybhatia2@ncsu.edu ybhatia2@ncsu.edu]&lt;br /&gt;
* Sanjana Dalal [mailto:sdalal2@ncsu.edu sdalal2@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/102&lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end/pull/203&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165529</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165529"/>
		<updated>2025-04-29T13:24:55Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:SS-1.jpg|800px|center|Screenshot of Manage Assignments page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SS-3.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Backend Files Changed ===&lt;br /&gt;
&lt;br /&gt;
* database.yml&lt;br /&gt;
* routes.rb&lt;br /&gt;
* docker-compose.yml&lt;br /&gt;
* Participants Controller&lt;br /&gt;
* Assignments Controller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Frontend Files CHanged ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Participants/Participants.tsx&lt;br /&gt;
* src/App.tsx&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal [mailto:magarwa3@ncsu.edu magarwa3@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia [mailto:ybhatia2@ncsu.edu ybhatia2@ncsu.edu]&lt;br /&gt;
* Sanjana Dalal [mailto:sdalal2@ncsu.edu sdalal2@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/102&lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end/pull/203&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165528</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165528"/>
		<updated>2025-04-29T13:24:13Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:SS-1.jpg|800px|center|Screenshot of Manage Assignments page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SS-3.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Backend Files Changed ===&lt;br /&gt;
&lt;br /&gt;
* database.yml&lt;br /&gt;
* routes.rb&lt;br /&gt;
* docker-compose.yml&lt;br /&gt;
* Participants Controller&lt;br /&gt;
* Assignments Controller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Frontend Files CHanged ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Participants/Participants.tsx&lt;br /&gt;
* src/App.tsx&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal [mailto:magarwa3@ncsu.edu magarwa3@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia [mailto:ybhatia2@ncsu.edu ybhatia2@ncsu.edu]&lt;br /&gt;
* Sanjana Dalal [mailto:sdalal2@ncsu.edu sdalal2@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/102&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165527</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165527"/>
		<updated>2025-04-29T13:24:00Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:SS-1.jpg|800px|center|Screenshot of Manage Assignments page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SS-3.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Backend Files Changed ===&lt;br /&gt;
&lt;br /&gt;
* database.yml&lt;br /&gt;
* routes.rb&lt;br /&gt;
* docker-compose.yml&lt;br /&gt;
* Participants Controller&lt;br /&gt;
* Assignments Controller&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Frontend Files CHanged ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Participants/Participants.tsx&lt;br /&gt;
* src/App.tsx&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal [mailto:magarwa3@ncsu.edu magarwa3@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia [mailto:ybhatia2@ncsu.edu ybhatia2@ncsu.edu]&lt;br /&gt;
* Sanjana Dalal [mailto:sdalal2@ncsu.edu sdalal2@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
https://github.com/expertiza/reimplementation-front-end/pull/102&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165525</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165525"/>
		<updated>2025-04-29T13:17:27Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* UI Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:SS-1.jpg|800px|center|Screenshot of Manage Assignments page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SS-3.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
[[File:SS-2.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal [mailto:magarwa3@ncsu.edu magarwa3@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia [mailto:ybhatia2@ncsu.edu ybhatia2@ncsu.edu]&lt;br /&gt;
* Sanjana Dalal [mailto:sdalal2@ncsu.edu sdalal2@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165524</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165524"/>
		<updated>2025-04-29T13:17:05Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* UI Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:SS-1.jpg|800px|center|Screenshot of Manage Assignments page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SS-3.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== UI Screenshots ==&lt;br /&gt;
'''Dark mode screenshot of View Assignments in Courses'''&lt;br /&gt;
[[File:SS-2.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal [mailto:magarwa3@ncsu.edu magarwa3@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia [mailto:ybhatia2@ncsu.edu ybhatia2@ncsu.edu]&lt;br /&gt;
* Sanjana Dalal [mailto:sdalal2@ncsu.edu sdalal2@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165523</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165523"/>
		<updated>2025-04-29T13:16:54Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Part 2: Merging Assignments View UI into Courses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:SS-1.jpg|800px|center|Screenshot of Manage Assignments page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SS-2.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SS-3.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== UI Screenshots ==&lt;br /&gt;
'''Dark mode screenshot of View Assignments in Courses'''&lt;br /&gt;
[[File:SS-2.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal [mailto:magarwa3@ncsu.edu magarwa3@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia [mailto:ybhatia2@ncsu.edu ybhatia2@ncsu.edu]&lt;br /&gt;
* Sanjana Dalal [mailto:sdalal2@ncsu.edu sdalal2@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165522</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165522"/>
		<updated>2025-04-29T13:16:29Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* UI Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:SS-1.jpg|800px|center|Screenshot of Manage Assignments page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SS-2.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SS-3.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal [mailto:magarwa3@ncsu.edu magarwa3@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia [mailto:ybhatia2@ncsu.edu ybhatia2@ncsu.edu]&lt;br /&gt;
* Sanjana Dalal [mailto:sdalal2@ncsu.edu sdalal2@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:SS-3.jpg&amp;diff=165521</id>
		<title>File:SS-3.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:SS-3.jpg&amp;diff=165521"/>
		<updated>2025-04-29T13:16:00Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165520</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165520"/>
		<updated>2025-04-29T13:15:24Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* UI Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:SS-1.jpg|800px|center|Screenshot of Manage Assignments page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:SS-2.jpg|800px|center|Dark mode screenshot of Manage Courses page]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal [mailto:magarwa3@ncsu.edu magarwa3@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia [mailto:ybhatia2@ncsu.edu ybhatia2@ncsu.edu]&lt;br /&gt;
* Sanjana Dalal [mailto:sdalal2@ncsu.edu sdalal2@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:SS-2.jpg&amp;diff=165519</id>
		<title>File:SS-2.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:SS-2.jpg&amp;diff=165519"/>
		<updated>2025-04-29T13:14:13Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165518</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=165518"/>
		<updated>2025-04-29T13:13:28Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* UI Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:SS-1.jpg|800px|center|Screenshot of Manage Assignments page]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal [mailto:magarwa3@ncsu.edu magarwa3@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia [mailto:ybhatia2@ncsu.edu ybhatia2@ncsu.edu]&lt;br /&gt;
* Sanjana Dalal [mailto:sdalal2@ncsu.edu sdalal2@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:SS-1.jpg&amp;diff=165517</id>
		<title>File:SS-1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:SS-1.jpg&amp;diff=165517"/>
		<updated>2025-04-29T13:11:01Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:E2506ss1.jpg&amp;diff=165516</id>
		<title>File:E2506ss1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:E2506ss1.jpg&amp;diff=165516"/>
		<updated>2025-04-29T13:08:47Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025&amp;diff=163948</id>
		<title>CSC/ECE 517 Spring 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025&amp;diff=163948"/>
		<updated>2025-04-09T04:26:26Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Final Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Spring 2025 - E2503. Refactor the Team hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2505. Testing Answer Tagging]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2508. Reimplement bidding-algorithm web service]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2509. Reimplement feedback_response_map.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2519. Implement view for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2522. Enhancing UI Consistency in Expertiza 1]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2520. Reimplement heatgrid UI for reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2517. Reimplement internationalization (frontend + backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2523: Enhancing UI Consistency in Expertiza 2]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2515:  Reimplement student_teams_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2501:  Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2502:  Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2512. Reimplement responses controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2510. Reimplement grades_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2507. Reimplement back end for submission records]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2514. Reimplement student_quizzes_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2518. Reimplement password resets (frontend + backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2516. Reimplement teams_users_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2511. Reimplement participants_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2521. UI for View submissions/assign grades (except heatgrid)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2513. Reimplement sign_up_topic.rb as project_topic.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2506. Implement testing for new Bookmarks Controller]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2509 Refactoring and Enhancing the Feedback Response Map Controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2539 Reimplement Student Task View (Frontend + Backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2521 UI for View submissions/assign grades (except heatgrid)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2524 Reimplement student review controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2525 Reimplement review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2526 Reimplement Teams and Participant hierarchies]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2530 Reimplement Grades Controller (Frontend + Backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2538 Reimplementing Questionnaire Page in Expertiza]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2534 UI for Assign Reviewers]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2540 Integration of Assignment participant Frontend with participant controller Backend]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2542. Refactor review_bids_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2533. ​​Reimplement the Team hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2531 Refactor participants_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2528 Testing for Survey Deployment]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2514. Reimplement student_quizzes_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2516. Reimplement teams_users_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2535 Reimplement User Profile Management (Frontend + Backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2529. Testing for the Questionnaire Helper in Expertiza]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2500. Refactor Student Teams Functionality]]&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163947</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163947"/>
		<updated>2025-04-09T04:24:44Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal [mailto:magarwa3@ncsu.edu magarwa3@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia [mailto:ybhatia2@ncsu.edu ybhatia2@ncsu.edu]&lt;br /&gt;
* Sanjana Dalal [mailto:sdalal2@ncsu.edu sdalal2@ncsu.edu]&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025&amp;diff=163946</id>
		<title>CSC/ECE 517 Spring 2025</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025&amp;diff=163946"/>
		<updated>2025-04-09T04:22:33Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Final Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* [[CSC/ECE 517 Spring 2025 - E2503. Refactor the Team hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2504. Mentor-meeting management]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2505. Testing Answer Tagging]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2508. Reimplement bidding-algorithm web service]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2509. Reimplement feedback_response_map.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2519. Implement view for results of bidding]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2522. Enhancing UI Consistency in Expertiza 1]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2520. Reimplement heatgrid UI for reviews]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2517. Reimplement internationalization (frontend + backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2523: Enhancing UI Consistency in Expertiza 2]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2515:  Reimplement student_teams_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2501:  Refactor review_mapping_helper.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2502:  Refactor review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2512. Reimplement responses controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2510. Reimplement grades_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2507. Reimplement back end for submission records]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2514. Reimplement student_quizzes_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2518. Reimplement password resets (frontend + backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2516. Reimplement teams_users_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2511. Reimplement participants_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2521. UI for View submissions/assign grades (except heatgrid)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2513. Reimplement sign_up_topic.rb as project_topic.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2506. Implement testing for new Bookmarks Controller]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Final Projects ==&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2509 Refactoring and Enhancing the Feedback Response Map Controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2539 Reimplement Student Task View (Frontend + Backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2521 UI for View submissions/assign grades (except heatgrid)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2524 Reimplement student review controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2525 Reimplement review_mapping_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2526 Reimplement Teams and Participant hierarchies]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2530 Reimplement Grades Controller (Frontend + Backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2538 Reimplementing Questionnaire Page in Expertiza]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2534 UI for Assign Reviewers]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2540 Integration of Assignment participant Frontend with participant controller Backend]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2532. Reimplement Missing ResponseMap Subclasses]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2542. Refactor review_bids_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2533. ​​Reimplement the Team hierarchy]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2531 Refactor participants_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2528 Testing for Survey Deployment]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2514. Reimplement student_quizzes_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2516. Reimplement teams_users_controller.rb]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2535 Reimplement User Profile Management (Frontend + Backend)]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2536. Improve assessment360 controller]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2527. Mentor-meeting management: assignments with topics]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2529. Testing for the Questionnaire Helper in Expertiza]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2500. Refactor Student Teams Functionality]]&lt;br /&gt;
* [[CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses]]&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163945</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163945"/>
		<updated>2025-04-09T03:49:52Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Manual Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163944</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163944"/>
		<updated>2025-04-09T03:49:01Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Backend Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163943</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163943"/>
		<updated>2025-04-09T03:46:37Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Design Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163942</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163942"/>
		<updated>2025-04-09T03:27:35Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Design Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control. Admins and Instructors have full CRUD permissions on courses, while TAs are limited to read and update access only. This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
* Single Responsibility Principle (SRP)  &lt;br /&gt;
* Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163941</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163941"/>
		<updated>2025-04-09T03:25:11Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* Design Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
**Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163940</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163940"/>
		<updated>2025-04-09T03:23:57Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 3.1 Objectives */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
===  Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163939</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163939"/>
		<updated>2025-04-09T03:20:40Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 9. Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163938</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163938"/>
		<updated>2025-04-09T03:20:35Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 8. Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163937</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163937"/>
		<updated>2025-04-09T03:20:29Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 7. Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
==Test Plan ==&lt;br /&gt;
&lt;br /&gt;
===  Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== 8. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163936</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163936"/>
		<updated>2025-04-09T03:20:16Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 6. Files That May Be Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 7. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== 8. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163935</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163935"/>
		<updated>2025-04-09T03:20:05Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 5. Implementation Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== 6. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 7. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== 8. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163934</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163934"/>
		<updated>2025-04-09T03:19:49Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 4. Design Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== 6. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 7. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== 8. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163933</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163933"/>
		<updated>2025-04-09T03:19:42Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 3. Purpose and Scope */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== 4. Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== 6. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 7. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== 8. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163932</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163932"/>
		<updated>2025-04-09T03:19:34Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 2. Problem Statement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== 6. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 7. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== 8. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163931</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163931"/>
		<updated>2025-04-09T03:19:24Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 1.Background */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== 6. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 7. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== 8. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163930</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163930"/>
		<updated>2025-04-09T03:18:39Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 8. Relevant Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== 6. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 7. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== 8. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163929</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163929"/>
		<updated>2025-04-09T03:18:31Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 7. Team */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== 6. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 7. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== 8. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163928</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163928"/>
		<updated>2025-04-09T03:18:24Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 6. Test Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== 6. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 7. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 7.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 7.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
== 7. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163927</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163927"/>
		<updated>2025-04-09T03:18:11Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 5. Files That May Be Modified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== 6. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 6. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163926</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163926"/>
		<updated>2025-04-09T03:18:01Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 4. Implementation Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== 5. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 5.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
== 5. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 6. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163925</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163925"/>
		<updated>2025-04-09T03:17:40Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 3. Purpose and Scope */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4. Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The design goals for this project focus on improving system integrity, performance, maintainability, and clarity in handling course-related operations.&lt;br /&gt;
&lt;br /&gt;
* '''Role-Based CRUD Operations:'''  &lt;br /&gt;
Implement precise role-based access control:&lt;br /&gt;
** Admins and Instructors have full CRUD permissions on courses  &lt;br /&gt;
** TAs are limited to read and update access only  &lt;br /&gt;
This ensures data integrity and system security by restricting access based on user roles.&lt;br /&gt;
&lt;br /&gt;
* '''Efficient Data Handling:'''  &lt;br /&gt;
CRUD operations are optimized for handling large datasets, using efficient database queries and pagination where necessary. This ensures that courses and assignments load quickly and scale well with increasing data size.&lt;br /&gt;
&lt;br /&gt;
* '''Error Handling and Validation:'''  &lt;br /&gt;
All inputs are validated on both frontend and backend. The backend returns standardized error responses with helpful messages, ensuring robustness and better feedback during failures or invalid operations.&lt;br /&gt;
&lt;br /&gt;
* '''API Documentation and Testing:'''  &lt;br /&gt;
RSwag is used to generate interactive Swagger API documentation for all CRUD endpoints. This improves testing, encourages adoption, and simplifies integration for future developers.&lt;br /&gt;
&lt;br /&gt;
* '''Modular and Scalable Architecture:'''  &lt;br /&gt;
The backend follows modular design principles such as:&lt;br /&gt;
** Single Responsibility Principle (SRP)  &lt;br /&gt;
** Don’t Repeat Yourself (DRY)  &lt;br /&gt;
Code is organized into manageable units like service objects, controllers, and serializers, making the application easy to maintain and extend.&lt;br /&gt;
&lt;br /&gt;
== 4. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 6. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163924</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163924"/>
		<updated>2025-04-09T03:06:28Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* UI Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== 4. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 6. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163923</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163923"/>
		<updated>2025-04-09T03:06:14Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* UI Screenshot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== 4. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshots ===&lt;br /&gt;
&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
''Dark mode screenshot of View Assignments in Courses''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|center|alt=Light mode screenshot of View Assignments in Courses]]&lt;br /&gt;
''Light mode screenshot of View Assignments in Courses''&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 6. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163922</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163922"/>
		<updated>2025-04-09T03:04:27Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* UI Screenshot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== 4. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshot ===&lt;br /&gt;
[[File:Frontend.png|700px|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 6. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163921</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163921"/>
		<updated>2025-04-09T03:03:57Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* UI Screenshot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== 4. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshot ===&lt;br /&gt;
[[File:Frontend.png|700px|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
[[File:newiamge.png|700px|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 6. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163920</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163920"/>
		<updated>2025-04-09T03:02:19Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* UI Screenshot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== 4. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshot ===&lt;br /&gt;
[[File:Frontend.png|700px|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 6. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Newiamge.png&amp;diff=163919</id>
		<title>File:Newiamge.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Newiamge.png&amp;diff=163919"/>
		<updated>2025-04-09T02:55:05Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Backend.png&amp;diff=163918</id>
		<title>File:Backend.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Backend.png&amp;diff=163918"/>
		<updated>2025-04-09T02:48:40Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: Ybhatia2 uploaded a new version of File:Backend.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163917</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163917"/>
		<updated>2025-04-09T02:47:55Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: /* 4.1 Frontend Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== 4. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== UI Screenshot ===&lt;br /&gt;
[[File:Frontend.png|700px|center|alt=Dark mode screenshot of View Assignments in Courses]]&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 6. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Frontend.png&amp;diff=163916</id>
		<title>File:Frontend.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Frontend.png&amp;diff=163916"/>
		<updated>2025-04-09T02:45:31Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163915</id>
		<title>CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Spring_2025_-_E2506._Merging_UI_for_View_Assignments_in_Courses&amp;diff=163915"/>
		<updated>2025-04-09T02:45:06Z</updated>

		<summary type="html">&lt;p&gt;Ybhatia2: CSC/ECE 517 Spring 2025 - E2506. Merging UI for View Assignments in Courses&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 1.Background ==&lt;br /&gt;
&lt;br /&gt;
Expertiza is software that uses Ruby on Rails to manage a website for managing assignments, teams, submissions, and reviews. This web application is managed by students and faculty at NC State, offering instructors full control over class assignments. Expertiza supports a variety of functions, including topic creation, group assignments, and peer review, making it a robust tool for handling diverse types of assignments. For a complete overview of Expertiza's capabilities, visit the Expertiza wiki.&lt;br /&gt;
&lt;br /&gt;
== 2. Problem Statement ==&lt;br /&gt;
The current course management interface in Expertiza lacks seamless integration between its frontend and backend components. While a new React-based UI and backend implementation have been proposed via pull requests, it is essential to ensure that they function cohesively and reliably when connected. Additionally, there exists a standalone UI for viewing assignments under courses, which is not yet integrated into the main course management interface.&lt;br /&gt;
&lt;br /&gt;
This project addresses two key issues:&lt;br /&gt;
* '''Integration Validation:''' Verifying that the frontend and backend communicate correctly, and that all course-related operations work as expected with proper role-based access control.&lt;br /&gt;
* '''UI Merging:''' Integrating the “View Assignments in Courses” page into the existing React course management UI to provide a unified and intuitive experience for users.&lt;br /&gt;
&lt;br /&gt;
By resolving these issues, the project aims to improve system usability, reduce UI fragmentation, and ensure robust backend interaction through proper testing and integration.&lt;br /&gt;
&lt;br /&gt;
== 3. Purpose and Scope ==&lt;br /&gt;
This project is designed to enhance the reliability, usability, and maintainability of the course management interface in Expertiza by addressing integration inconsistencies and UI separation. The scope is limited to validating and merging the frontend-backend integration for course-related views and actions.&lt;br /&gt;
&lt;br /&gt;
=== 3.1 Objectives ===&lt;br /&gt;
* '''Validate Integration:''' Ensure the frontend and backend components in the pull request work correctly, including API communications, role-based access, and state updates.&lt;br /&gt;
* '''UI Consolidation:''' Merge the separate “View Assignments in Courses” UI into the main course management React interface.&lt;br /&gt;
* '''Codebase Cleanup:''' Remove redundant or standalone implementations once merged to avoid duplication.&lt;br /&gt;
* '''Maintain Compatibility:''' Ensure that permissions, routing, and rendering work consistently across all merged components.&lt;br /&gt;
* '''Improve UX:''' Provide a cohesive user experience by unifying related course features into a single interface.&lt;br /&gt;
&lt;br /&gt;
== 4. Implementation Plan ==&lt;br /&gt;
This project is structured into two main parts. As implementation has not yet started, the following outlines our proposed approach to accomplish both tasks.&lt;br /&gt;
&lt;br /&gt;
=== 4.1 Frontend Implementation ===&lt;br /&gt;
Set up the reimplementation frontend locally from the repository.&lt;br /&gt;
&lt;br /&gt;
* Test the existing course UI to ensure data is rendered from the backend&lt;br /&gt;
* Verify table functionalities like sorting, filtering, pagination, and responsiveness&lt;br /&gt;
* Integrate the “View Assignments in Courses” UI into the course view&lt;br /&gt;
* Add toggle button or collapsible UI element to show/hide assignments&lt;br /&gt;
* Implement dark/light mode toggle using React state and conditional TailwindCSS classes&lt;br /&gt;
* Ensure proper UI formatting for assignment rows, including icons and action handlers&lt;br /&gt;
* Test user interactions and error/success messages&lt;br /&gt;
&lt;br /&gt;
=== 4.2 Backend Implementation ===&lt;br /&gt;
Set up the reimplementation backend API locally and link it with the frontend.&lt;br /&gt;
&lt;br /&gt;
* Validate all course-related API endpoints (GET, POST, PUT, DELETE)&lt;br /&gt;
* Ensure assignments returned by the backend are filtered by course ID&lt;br /&gt;
* Monitor backend logs for errors and fix request/response mismatches&lt;br /&gt;
* Confirm compatibility of existing assignment APIs with frontend integration&lt;br /&gt;
* Refactor or adjust backend routes to support course-assignment mapping&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 5. Files That May Be Modified ==&lt;br /&gt;
&lt;br /&gt;
=== Part 1: Verifying Course Management Frontend-Backend Integration ===&lt;br /&gt;
These files relate to the Course management UI and API interaction layer. They may be reviewed, debugged, or enhanced to ensure API integration works correctly.&lt;br /&gt;
&lt;br /&gt;
* src/components/Form/FormSelect.tsx&lt;br /&gt;
* src/components/Form/interfaces.ts&lt;br /&gt;
* src/components/Table/GlobalFilter.tsx&lt;br /&gt;
* src/components/Table/Table.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx&lt;br /&gt;
* src/pages/Courses/CourseColumns.tsx&lt;br /&gt;
* src/pages/Courses/CourseCopy.tsx&lt;br /&gt;
* src/pages/Courses/CourseDelete.tsx&lt;br /&gt;
* src/pages/Courses/CourseEditor.tsx&lt;br /&gt;
* src/pages/Courses/CourseUtil.ts&lt;br /&gt;
* src/utils/interfaces.ts&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Merging Assignments View UI into Courses ===&lt;br /&gt;
These files are specific to displaying the list of assignments beneath each course in a collapsible extension, as shown in PR #76:&lt;br /&gt;
&lt;br /&gt;
* src/pages/Assignments/Assignment.tsx&lt;br /&gt;
* src/pages/Courses/Course.tsx &amp;lt;small&amp;gt;(Updated to render assignment extensions)&amp;lt;/small&amp;gt;&lt;br /&gt;
* src/pages/Courses/CourseAssignments.tsx&lt;br /&gt;
* src/pages/Courses/CourseAssignments.test.tsx&lt;br /&gt;
* src/pages/ViewTeamGrades/grades.scss &amp;lt;small&amp;gt;(Styling for grades UI, potentially reused)&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These files may require changes to merge both UIs and introduce features such as assignment expansion, reusable tables, and future dark mode toggle.&lt;br /&gt;
&lt;br /&gt;
== 6. Test Plan ==&lt;br /&gt;
&lt;br /&gt;
=== 6.1 Manual Tests ===&lt;br /&gt;
This project will include manual testing to ensure both frontend-backend integration and UI correctness after merging the &amp;quot;View Assignments in Courses&amp;quot; feature into the course management UI.&lt;br /&gt;
&lt;br /&gt;
'''Frontend/Backend Integration Tests'''&lt;br /&gt;
* Ensure the Courses table loads all available course records using backend data.&lt;br /&gt;
* Verify that assignment lists expand correctly under each course.&lt;br /&gt;
* Validate that create, edit, delete, and copy operations on courses function correctly and reflect real-time updates.&lt;br /&gt;
* Confirm that assignment data is fetched and rendered within the appropriate course context.&lt;br /&gt;
* Simulate API failure or incorrect responses and verify appropriate error messages are displayed.&lt;br /&gt;
&lt;br /&gt;
'''UI Tests'''&lt;br /&gt;
* Confirm that the correct action icons are used for editing, deleting, and copying courses and assignments.&lt;br /&gt;
* Ensure the assignment table layout matches the rest of the application in font size, spacing, and alignment.&lt;br /&gt;
* Validate that assignment rows expand/collapse smoothly beneath their corresponding courses.&lt;br /&gt;
* Check pagination behavior (if implemented) and confirm usability across all screen sizes (desktop and mobile).&lt;br /&gt;
* Test dark/light mode toggle (if implemented) to ensure it switches the UI theme without breaking layout or styles.&lt;br /&gt;
&lt;br /&gt;
=== 6.2 Automated Tests ===&lt;br /&gt;
* '''Frontend:''' We will include unit tests using `CourseAssignments.test.tsx` to validate the rendering and behavior of the assignments table.&lt;br /&gt;
* '''Backend:''' API endpoints for courses and assignments will be validated using RSpec controller tests (to be added as implementation progresses).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 7. Team ==&lt;br /&gt;
&lt;br /&gt;
'''Mentor:''' Mitesh Anil Agarwal &amp;lt;magarwa3@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Team Members:'''&lt;br /&gt;
* Yuvraj Singh Bhatia &amp;lt;ybhatia2@ncsu.edu&amp;gt;&lt;br /&gt;
* Sanjana Dalal &amp;lt;sdalal2@ncsu.edu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. Relevant Links ==&lt;br /&gt;
&lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/70  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end/pull/76  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-front-end  &lt;br /&gt;
*https://github.com/expertiza/reimplementation-back-end&lt;/div&gt;</summary>
		<author><name>Ybhatia2</name></author>
	</entry>
</feed>