Page MenuHomePhabricator

(GSoC 2024) Improve system for copying courses from one Dashboard to another [Programs & Events Dashboard]
Closed, ResolvedPublic

Assigned To
Authored By
Pranjal-Rajput
Mar 28 2024, 6:03 PM
Referenced Files
F55529260: Screenshot 2024-06-21 at 8.19.10 PM.png
Jun 21 2024, 4:43 PM
F55529267: new3.png
Jun 21 2024, 4:43 PM
F55529272: new1.png
Jun 21 2024, 4:43 PM
F55266740: After.png
Jun 12 2024, 6:43 PM
F55266659: before.png
Jun 12 2024, 6:43 PM
F43681895: Pic 2.png
Mar 28 2024, 6:03 PM
F43681774: Pic 1.png
Mar 28 2024, 6:03 PM

Description

Profile Information

Name: Pranjal Rajput
Year: 3rd
Degree: Bachelor of Technology
University: Indian Institute of Technology (IIT BHU) Varanasi
Timezone: Indian Standard Time (UTC +5:30)
Github: pr4nj41
Slack Handle: pr4nj41
LinkedIn: pranjal-rajput
Working hours: 10:00 AM to 08:00 PM (IST)


Introduction To The Project

[Programs & Events Dashboard] Improve system for copying courses from one Dashboard to another

This project aims to enhance the course copying feature present for copying courses across the servers, specifically addressing the issue of incomplete content transfer between the Programs & Events Dashboard and the Wiki Education Dashboard instances.

Currently, when courses are copied between these platforms, crucial elements such as Timeline content are not included, posing challenges in reusing assignment plans. The proposed improvements will streamline the transfer process, enabling seamless migration of Timelines and other essential content across servers. This involves both frontend and backend components, requiring expertise in Ruby, JavaScript, and React.

Project Goals And Benefits:
  • Enhance course copying functionality between the Programs & Events Dashboard and the Wiki Education Dashboard instances to include complete content transfer, particularly Timelines.
  • Improve user experience by streamlining the course copying process, reducing manual intervention, and minimising data loss during migration.
Estimated Size: 350 hours
Possible mentor(s)

@Ragesoss
@dumbPotato

Have you contacted your mentors already?

Yes


Current Implementation of Course Copying Across Servers

  1. The copy_course_controller is defined, which handles the copying of courses across servers. It requires admin permissions and responds to HTML requests.
  2. The copy method within the controller is responsible for initiating the course copying process. It instantiates a copy course service object with the URL of the course to be copied.
  3. The CopyCourse class is initialised with the URL of the course to be copied. Several Helper methods like get_request are used to fetch course data, category data, and user data from the source server via HTTP requests.
  4. The make_copy method retrieves main course data, extracts relevant attributes to be copied, creates a new course on the destination server, and sets a random passcode for authentication.
  5. Within the copy_main_course_data, if the course contains update logs, a method fix_update_logs_parsing is called to ensure proper parsing by converting keys to integers.
  6. The add_tracked_wikis method adds tracked wikis associated with the course to the destination server, excluding the home wiki which is automatically added.
  7. The copy_tracked_categories_data method copies tracked categories associated with the course, creating them on the destination server.
  8. The copy_users_data method copies user data associated with the course, creating corresponding user entries and assigning roles within the course on the destination server.
DRAWBACKS:
  • Only admins are allowed to use the current implementation of copying courses between Programs & Events Dashboard and the Wiki Education Dashboard servers.
  • Incomplete transfer of data is taking place during copying, the timeline and including content doesn't get copied.
  • Normal users only have the functionality of cloning courses from the current server. They can’t copy courses between Programs & Events Dashboard and Wiki Education Dashboard servers.

PROPOSED IMPLEMENTATION

  1. The Timeline data of any course is available at url = <Course_Url>/timeline.json. We will use this to get the timeline data while copying the course.

Course Timeline:

Pic 1.png (1×2 px, 457 KB)

Snapshot of corresponding timeline data at <course_url>/timeline.json:

Pic 2.png (1×2 px, 425 KB)

  1. The timeline data can be retrieved from this timeline.json by defining a method retrieve_timeline_data in course_copy.rb file.
  2. Define a copy_timeline_data method for adding the timeline data to the new course (copied from another server).
  3. Add code to copy_timeline_data method for copying data of blocks to the timeline of the new course. Similarly, other attributes can be copied as needed.
  4. Update the copy_main_course_data method present in copy_course.rb to enable copying of more attributes from the original course.
  5. Call the above defined methods inside the predefined make_copy method in course_copy.rb
  6. Make a separate controller for non-admin users which would run only when the user is on Programs & Events Dashboard allowing copying of courses from Wiki Education Dashboard to Programs & Events Dashboard.
  7. Error handling is implemented throughout the process to catch exceptions such as failed HTTP requests or invalid data, providing appropriate error messages to the user interface.
  8. Add code for the frontend part. The users will get options to either copy the course from Wiki Education Dashboard by using course url or make a clone of a course from the current Dashboard by selecting the course name, only when they are present on Program and Events Dashboard.
  9. Integrate frontend code with backend.
  10. Add tests for frontend and backend code.
  11. Write documentation.
Advantages of Proposed Implementation:
  • Normal users will now have both the options of cloning courses from the current server and courses from Wiki Education Dashboard to Programs & Events Dashboard (across server).
  • Course copying functionality will have the feature of copying the timeline including its content for both admin and normal users.
  • No intervention or clashes with any of the current implementations.
  • Reuse of predefined methods and attributes instead of defining new ones.
The proposed solution mentioned above is adaptable. I am flexible and open to suggestions in making necessary changes based on requirements and discussions with my mentor.

Additional Task

Problem

The current Dashboard mobile view presents challenges such as overflowing pages, non-responsiveness and design flaws, significantly limiting its functionality on small screens. This restricts user engagement and hampers the overall user experience.

Proposed Solution
  1. Make required CSS changes to solve overflowing and responsiveness issues.
  2. Introduce Controllers/Pagination mechanisms to manage large tables with numerous columns on smaller screens.
  3. Create responsive designs for mobile view

My Contributions

I have been an active member of the WikiEduDashboard for the last four months and have been actively engaged in discussions and reviews for all the proposed changes and Functionalities.
I have 29+ merged PRs in the WikiEduDashboard project. I have also created over 7 issues.
Following are the pull requests I’ve opened in WikiEduDashboard projects along with their status:

Pull Requests created by me

S. No.PRsDescriptionStatus
1.#5716Implemented Role-Based No-Assignment Message in 'Assignment & Exercise'Merged
2.#5715Fixed Edit button overlapping in Timeline wizard summaryMerged
3.#5712Improved the layout of "subject specific guides" block in TimelineMerged
4.#5704Added Starting Day Feature for making calendar weeks dynamicOpen
5.#5688Implemented Native confirm component instead of JavaScript confirm instanceMerged
6.#5686Fixed Broken Layout of Article Viewer User LegendMerged
7.#5680Fixed overflow in Article ViewerMerged
8.#5679Fixed Feedback Form UI on Home tab of a courseMerged
9.#5664Improved Difference ViewerMerged
10.#5656Fixed overlapping of campaign_navbar at the desktop view on Language PickerMerged
11.#5651Fixing warnings when starting GuardMerged
12.#5641Fixed UI of Training module path overlapping with Table of contentsMerged
13.#5640Fixed overlap of Training module navbar with breadcrumbsMerged
14.#5637​​Fixed State Persistence of Quality ChecklistMerged
15.#5631Refactored Block.jsx from Class component to Functional component.Open
16.#5630Refactored TrainingModulesViewMode.jsx from Class component to Functional componentMerged
17.#5626Eliminating Redundant Clicks on Submit Button in Article FinderMerged
18.#5625Refactored training_module_handler.jsx from Class component to Functional componentMerged
19.#5624Refactored slide_menu.jsx from Class component to Functional componentMerged
20.#5623Refactored 'assignment.jsx' from Class component to Functional componentMerged
21.#5622Improved UI of Feedback FormMerged
22.#5620Refactored 'default_campaign_form.jsx' from Class component to Functional componentMerged
23.#5619Refactored 'campaign_ores_plot.jsx' from Class component to Functional componentMerged
24.#5618Refactored 'modal.jsx' from Class component to Functional ComponentMerged
25.#5617Refactored 'wp10_graph.jsx' from Class component to Functional ComponentMerged
26.#5616Refactored 'edit_size_graph.jsx' from Class component to Functional ComponentMerged
27.#5612Refactored 'course.jsx' to functional componentOpen
28.#5611Fixed Alignment issue on Article Finder PageMerged
29.#5605Added cancel button on the "Create New or Clone Program" component on P&E dashboardMerged
30.#5603Added an option to close Program Creation Component on P&E dashboard explicitlyMerged
31.#5597Added Informative Text to 'See More' Button on Hover in P&E Dashboard 'Articles' Tab of a ProgramMerged

Issues created by me

S. No.IssueDescriptionStatus
1.#5701Calendar not rendering correctly in date-picker in Course CreatorOpen
2.#5663Improvement in the UI of Difference ViewerClosed
3.#5636Bug: Checkbox state not being preserved in Quality ChecklistClosed
4.#5608Error while trying to add article as an available article in "Article Finder"Closed
5.#5604"Create New or Clone Program" Component has no way to close it explicitlyClosed
6.#5602No way to close the Program Creation Component on P&E dashboard explicitlyClosed
7.#5558Responsive UI for the 'Training' Page in Mobile ViewClosed

TIMELINE

Community Bonding Period

May 1 - May 26

  • Discuss and get pending pull requests merged
  • Discuss with the mentors on what communication medium would they prefer for updates regarding the project
Coding period begins

May 27 - June 9

  • Discuss what other parameters need to be copied along with the timeline from the original course to copied course.
  • Add methods to copy timeline and other parameters in the current implementation.

June 10 - June 16

  • Discuss the design of the Frontend part for course copying feature for normal users.
  • Start designing the Figma mockup of the design.

June 17 - June 23

  • Develop the Frontend part for course copying features for normal users.
  • Make a separate controller for course copying features for normal users.

June 24 - June 31

  • Integrate the Frontend code with the backend code.
  • Test the code and its working.

July 1 - July 7

  • Discussion around testing of the written code.
  • Write tests in the test suite for added frontend code.
  • Write tests in the test suite for added backend code.
Phase-1 Evaluation (July 8 -July 12 )

July 12 - July 17

  • Resolve bugs
  • Document the features implemented.

July 17 - July 21

  • Discuss with the mentor the required design/Frontend code changes for mobile view.
  • If required, start designing the Figma mockup of the design.

July 22 - August 11

  • Make changes to frontend code to improve mobile view.

August 12 - August 18

  • Buffer Week for implementing pending tasks.
  • Write a blog about my Summer of Code journey.
Final Evaluation (August 19 - August 26)
This timeline is designed for a standard 12-week program. If additional time is required to incorporate more features and use cases, the timeline will be extended by a few weeks accordingly.

POST GSOC

I am eager to continue my involvement with the WikiEdu & Wikimedia community beyond the scope of GSoC. Post the GSoC period, I would love to continue contributing to this project and implement more features that may not have been covered in GSoC in the short time interval.
I will also try to provide consistent patches and bug fixes to the project. I would be available to update, debug, and maintain the code of the app as required, ensuring that it remains robust and reliable.


About Me

I’m Pranjal Rajput, a 3rd year Engineering undergraduate at IIT (BHU), Varanasi. You may know me better as PR4NJ41 on GitHub!
I am an avid developer and love contributing to open source. I started out with development on December '21 with the basics. Later, over the months, I explored various technologies. Via a course I undertook, I practised the MERN stack and by being a part of the website teams of various college bodies and hackathons, I worked on other technologies, like Javascript, ReactJS, Ruby, SQL, NodeJS, Git, Firebase, Django etc.
I am the Tech Executive of various clubs like Club of Sustainability and Innovation, and college fests like FMC weekend. I am also a part of the Club of Programmers, IIT (BHU), the programming society of my university - IIT (BHU) Varanasi.
I started contributing to several open source projects in March’22 and have successfully participated in Hacktoberfest’22 and '23. I also have experience in ML and have been selected in Amazon ML School ‘23.

MY CODING SKILLS

I have been interested in programming since my first semester itself. I started out with competitive programming wherein I used to code in C++ and eventually, I ended up developing an interest in Software Development.
Starting off with basics (HTML, CSS, and JavScript), I later moved to frameworks and technologies built around ReactJS, Ruby, Node.js and SQL. Following are the frameworks, technologies, and languages I’ve used:

  • Javascript
  • ReactJS
  • Ruby
  • SQL
  • MongoDB
  • Express.js
  • Node.js
  • Django
  • Angular
  • Flutter

Here you can find all the projects I've been working on and contributing to: https://github.com/PR4NJ41
I am a quick learner and very keen on expanding my horizons to newer technologies. If the project requires a skill I need to learn, I will give my 100% in practising it.

Internships

Web Developer Intern at DhanDolat (Dec ‘22 - Feb ‘22)

  • DhanDolat is a Financial Learning Platform.
  • Developed the Frontend part of the website using ReactJS.
  • Built the Backend and database using SQL.
  • Implemented google authentication.

Event Timeline

debt renamed this task from Proposal: [Programs & Events Dashboard] Improve system for copying courses from one Dashboard to another to (GSoC 2024) Improve system for copying courses from one Dashboard to another [Programs & Events Dashboard] .Jun 4 2024, 5:31 PM
debt updated the task description. (Show Details)
debt added a subscriber: dumbPotato.
debt subscribed.

Weekly Internship Report (27 May - 2 June)


Overview of Tasks Completed

  • Discussed with my mentor the additional parameters of the timeline that need to be copied.
  • Created methods for copying timeline for Admins from Wiki Education Dashboard to Wikimedia Programs & Events Dashboard and vice versa.

Key Accomplishments

  • Successfully created robust methods for data transfer between servers, ensuring accurate and efficient copying of data for Admins.

Pull Request

Before Implementation

before.png (1×2 px, 208 KB)

After Implementation

After.png (1×2 px, 348 KB)

Challenges Faced

  • Understanding and determining the necessary timeline parameters for effective data copying.

Learnings and Skills Gained

  • Enhanced my ability to gather and define project requirements through effective communication with a mentor.
  • Improved my technical skills in developing methods for server-to-server data transfer.

Weekly Internship Report (3 June - 9 June)


Overview of Tasks Completed

  • Created functionality for copying course on Wikimedia Programs & Events Dashboard for Non-Admins.

Key Accomplishments

  • Successfully created functionality for copying courses from another server on the Wikimedia Programs & Events Dashboard for Non-Admins.
  • Developed a form for modifying course details after course copying.

Screenshots

  1. Added button for course copying from another server.

new1.png (656×2 px, 144 KB)

  1. Implemented functionality for getting user input of the URL of the course.

new3.png (728×2 px, 128 KB)

  1. After copying of course, users can modify details.

Screenshot 2024-06-21 at 8.19.10 PM.png (1×2 px, 210 KB)

Challenges Faced

  • Implementing these concepts presented several challenges initially, but with persistence and dedication, I successfully worked through them.

Learnings and Skills Gained

  • This week, I significantly deepened my understanding of Ruby's controllers, views, models, and routes. The week provided valuable insights into the MVC (Model-View-Controller) architecture, enhancing my ability to create dynamic and interactive webpages. These insights have been immensely helpful and have provided me with a solid foundation in these areas.
  • I also gained a good amount of knowledge about handling HTTP requests in Ruby on Rails. I learned how to work with different types of HTTP methods and understand how Rails processes these requests through its routing and controller mechanisms.

Navigating Challenges Together

My mentor, @Ragesoss has been incredibly supportive and insightful. He is always ready to help and provide his views, suggesting better approaches to problems and guiding me towards more efficient and effective solutions. His guidance has been invaluable in helping me grasp complex concepts and apply them effectively.


Weekly Internship Report (10 June - 16 June)


Overview of Tasks Completed

  • Implemented the option to include or exclude User_data while copying a course.
  • Implemented non-admin permission to access the copy course page on Programs and Events Dashboard.
  • Introduced the Copy Course from another Server button on the Homepage for easy access.
  • Enhanced UI on the copy_course page for better usability.
  • Added a checkbox on the copy_course page to allow optional copying of user_data.

Key Accomplishments

Improved the functionality of copying a course by allowing users to choose whether to include or exclude User_data. Additionally, granted non-admin users permission to access the copy course page on Programs and Events Dashboard. The user interface on the copy_course page has also been enhanced to improve usability.

Screenshots

1. Added Copy Course from another Server Button on Hompage:

{F56224983, layout=center, size=full}

2. Copy Course Page:

Before:

{F56224793, layout=center, size=full}

After:

{F56224796, layout=center, size=full}

Challenges Faced

  • Throughout the week, I faced challenges in understanding user permissions, but I was able to overcome them. As a result, I gained valuable insights and enhanced my skills in various aspects.

Learnings and Skills Gained

  • Overall, it was a productive week with significant progress made on the assigned tasks. I look forward to continuing my learning and growth in the upcoming weeks of the internship.

Weekly Internship Report (17 June - 23 June)


Overview of Tasks Completed

  • Added a modal for updating/editing course details after the course is copied.
  • This feature is available on both the Programs & Events Dashboard and the Wiki Education Dashboard.

Key Accomplishments

  • Users now have the ability to easily modify course details after copying, providing them with more flexibility and control over their courses.

Github Commits

Screenshots

After copying of course, users can modify details through the modal
{F56226075, layout=center, size=full}

Learnings and Skills Gained

  • Through this task, I have gained valuable experience in implementing user-friendly features and enhancing the user experience.

Goals for Next Week:

  • My goal for next week is to focus on writing RSpec tests to ensure the functionality and reliability of the features implemented.

Weekly Internship Report (24 June - 30 June)


Overview of Tasks Completed

  • During this week, I successfully resolved Rspec errors and initiated the process of writing test cases for the new functionality I implemented.

Key Accomplishments

  • Resolved Rspec issues in the following files:
    • copy_course_spec.rb
    • copy_course_controller_spec.rb
  • Created a stub method for simulating HTTP network requests for testing purposes

Github Commits

Challenges Faced

  • One of the main challenges I encountered during this project was stubbing network requests. Initially, I found it to be quite difficult and it took a lot of effort to figure out the best approach. However, instead of giving up, I pushed myself to keep trying different methods and eventually, I was able to successfully stub the network request.

Learnings and Skills Gained

  • Throughout this week, I have significantly enhanced my knowledge of Stubbing and rspec testing, allowing me to not only deepen my understanding but also improve my troubleshooting and problem-solving capabilities, ultimately resulting in a successful outcome.

Weekly Internship Report (1 July - 7 July)


Overview of Tasks Completed

  • I successfully developed and implemented test cases for the newly added functionality. Additionally, I addressed and resolved other minor issues within the codebase.
  • This week, I also created the functionality for handling duplicate slugs when courses are copied.

Key Accomplishments

  • I have successfully developed test cases for the functionality that I have implemented, ensuring that the code performs as expected and meets the requirements.
  • Implemented a feature to handle duplicate slugs when copying courses. This enhancement allows users to successfully copy courses even if a similar slug exists, eliminating error messages previously encountered.
  • Resolved RuboCop violations.
  • Addressed minor issues to improve overall performance.

Github PR

Other Github Commits

Challenges Faced

  • One of the challenges I encountered was in writing a test case that required the use of sleep or wait time. While the initial solution worked correctly, it lacked optimization. After implementing optimizations, I was able to eliminate the need for sleep or wait time, resulting in a more efficient test case.

Learnings and Skills Gained

  • Through this week's tasks, I have further developed my skills in software testing, specifically in writing test cases for new functionality.
  • I have also improved my understanding of code optimization techniques to enhance performance and efficiency. This week has allowed me to enhance my problem-solving skills and expand my knowledge of software development practices.

Weekly Internship Report (8 July - 14 July)


Overview of Tasks Completed

  • I successfully implemented a new feature to support course URLs with additional suffix.

Key Accomplishments

  • I have successfully Implemented new feature to support course URLs with additional suffixes, such as '/home'.
  • This feature also supports URLs both with and without the "https://" prefix.

Github PR

Screenshots

Before:

{F57285868, layout=center, size=full}

After:

{F57285874, layout=center, size=full}
{F57285876, layout=center, size=full}

Challenges Faced

  • Implementing the feature to support course URLs with additional suffixes required handling various URL formats and ensuring that the system could seamlessly process both suffixed URLs and those with or without the "https://" prefix. Balancing this complexity with maintaining system stability was a significant challenge.

Learnings and Skills Gained

  • Through this task, I deepened my understanding of URL structures and learned how to implement features that accommodate diverse URL formats.
  • This experience highlighted the importance of flexibility in coding and the need to account for different scenarios to ensure robust feature implementation.

Weekly Internship Report (15 July - 21 July)


Overview of Tasks Completed

  • I successfully added functionality to copy training modules when copying a course.

Key Accomplishments

  • I added functionality to copy training modules when copying a course.
  • This enhancement allows users to selectively copy timeline data according to their needs when copying a course.
  • Assignment plans can be re-used now in copied courses.

Github PR

Other Commits

Challenges Faced

  • This week, adding functionality to copy training modules with courses posed challenges in maintaining data integrity and ensuring that the copying process was efficient and error-free. Handling related issues with Rspec, nil content, and Rubocop offenses required careful attention to detail and problem-solving skills.

Learnings and Skills Gained

  • These tasks enhanced my skills in managing data relationships and copying functionality within applications.
  • I learned how to address nil content issues and refine Rspec tests, as well as improve my proficiency in code quality tools like Rubocop, leading to cleaner and more maintainable code.

Weekly Internship Report (22 July - 28 July)


Overview of Tasks Completed

  • I successfully Enhanced Mobile Responsiveness and UI Refinements in Course Pages

Key Accomplishments

  • Added scrollbar in activity tab of the course
  • Fixed Difference Viewer
  • Made other improvements as shown in commits below

Github PR

Other Commits

Screenshots

Fixed Course Navbar

BeforeAfter
{F57285910, layout=center, size=full}{F57285913, layout=center, size=full}

Fixed notifications

BeforeAfter
{F57285916, layout=center, size=full}{F57285918, layout=center, size=full}

Fixed Timeline

BeforeAfter
{F57285921, layout=center, size=full}{F57285923, layout=center, size=full}

Fixed Resourse Tab

BeforeAfter
{F57285926, layout=center, size=full}{F57285928, layout=center, size=full}

Challenges Faced

  • Managing overlapping elements, inconsistent styling, and functional discrepancies, such as those with the Difference Viewer and course notifications, demanded meticulous adjustments and cross-browser testing.

Learnings and Skills Gained

  • I improved my skills in responsive design and UI/UX refinements by addressing diverse layout and styling issues.
  • This experience deepened my understanding of design principles, troubleshooting UI components, and ensuring consistent user experience across different device sizes and resolutions.

Weekly Internship Report (29 July - 4 August)


Overview of Tasks Completed

  • I successfully changed the course type for some courses while copying it from one server to another

Key Accomplishments

  • I successfully changed the course type for some courses while copying it from one server to another

Github PR

Other Commits

Challenges Faced

  • Changing the course type while copying courses between servers involved managing data consistency and ensuring that the course type was correctly updated across different environments.
  • Addressing Rubocop warnings and fixing failing specs required careful code review and adjustments to maintain code quality and functionality.

Learnings and Skills Gained

  • I gained insights into data migration and environment-specific changes, enhancing my ability to manage course types across servers.
  • This week also improved my skills in maintaining code quality by resolving Rubocop warnings and fixing failing specs, which reinforced best practices for coding standards and testing.

Weekly Internship Report (5 August - 11 August)


Overview of Tasks Completed

  • I successfully fixed Mobile Responsive UI Enhancements for Training Pages.

Key Accomplishments

I successfully fixed several UI issues in Training Pages which include:

  • Text indentation in cards
  • Overlapping completion status text
  • "Next Page" button in training pages

Github PR

Other Commits

Screenshots

BeforeAfter
{F57285953, layout=center, size=full}{F57285955, layout=center, size=full}
BeforeAfter
{F57285957, layout=center, size=full}{F57285961, layout=center, size=full}

Challenges Faced

  • Fixing mobile responsive UI issues for training pages involved resolving complex layout problems, such as text indentation and overlapping elements, which varied across different devices.

Learnings and Skills Gained

  • I deepened my understanding of responsive design, particularly in handling UI challenges like text indentation, overlapping elements, and button functionality on mobile devices.
  • This experience enhanced my ability to create consistent, user-friendly interfaces across various screen sizes, ensuring a smooth user experience on training pages.

Weekly Internship Report (12 August - 18 August)


Overview of Tasks Completed

  • I successfully implemented URL Handling for Course Copying to Support Multiple Dashboards

Key Accomplishments

  • This update improved the course copying functionality by enhancing URL handling to support multiple dashboards.
  • Previously, the system was limited to a hardcoded dashboard URL, which caused issues when working with multiple dashboards.
  • This change dynamically handles URLs, allowing the copying of courses between servers to work correctly regardless of the dashboard.

Github PR

Other Commits

Challenges Faced

  • Implementing dynamic URL handling for course copying across multiple dashboards involved addressing the limitations of the previously hardcoded URLs. Ensuring compatibility across different dashboards required careful consideration of how URLs were constructed and parsed, adding complexity to the task.

Learnings and Skills Gained

  • I gained a deeper understanding of URL management and how to implement flexible solutions that accommodate various environments.
  • This experience also reinforced the importance of adaptability in code, as well as the ability to troubleshoot and fix issues in testing environments, such as resolving Rspec failures.