Color Mode

Coding Challenge: Emergency Handoff

In this challenge assignment, you will step into a real-world scenario that developers frequently encounter: taking over someone else's project mid-development. Your coworker had a family emergency and will be out for at least a week. The client's website is almost ready for launch, but several critical tasks remain unfinished. You have been asked to complete the work so the site can launch on schedule.

Unlike previous assignments where you built features from scratch, this challenge requires you to read, understand, and modify existing code. This tests a different but equally important skill set: code comprehension, debugging, and working within an established codebase with its own patterns and conventions.

The project is for Kizuna Rail, a Japanese railway company launching an English-language website to attract international tourists. Your coworker left you a detailed todo list of what still needs to be done. Your job is to complete each task and deliver the final product.

Preparation

This assignment uses a pre-built project repository. You will use the GitHub template feature to create your own copy, then clone it to your local machine to work on it.

1. Create Your Copy and Clone the Repository

Start by creating your own copy of the project:

  1. Visit the repository at https://github.com/byui-cse/kizuna-rail
  2. Click the Use this template button in the upper right corner and select Create a new repository
  3. Give your repository a name (kizuna-rail) and create it under your GitHub account
  4. Clone your new repository to your local machine:
    
                    git clone https://github.com/YOUR-USERNAME/kizuna-rail.git
                    cd kizuna-rail
                

This repository is a template, not a standard repository to fork. Use the Use this template button to create your own independent copy for completing the challenge. Only fork the repository if you plan to contribute improvements or updates to the challenge itself, which is typically done by instructors or industry professionals.

2. Install Dependencies and Start the Server

This project uses pnpm as its package manager. Install the required dependencies and start the development server:


        # Install all project dependencies
        pnpm install
        
        # Start the development server
        pnpm run dev
    

The server should start on http://127.0.0.1:3000. Open this URL in your browser to view the site.

About pnpm

This project uses pnpm as its package manager. If you do not have pnpm installed globally on your system, follow the installation instructions at pnpm.io/installation.

3. Review the Scenario

Before starting work, familiarize yourself with the project by visiting these pages in your browser:

The emergency handoff page provides background context about the project and lists six specific tasks that need to be completed. Read through the entire scenario before you begin working on the tasks.

Challenge Instructions

Your coworker left you a detailed todo list that needs to be completed before the site can launch. The complete list of tasks, along with specific requirements and helpful hints, is available on the emergency handoff scenario page within the running application.

Each task requires you to read existing code, understand how it works, and make targeted improvements or fixes. Work through the tasks systematically, testing each one thoroughly before moving to the next.

Working with Existing Code

This challenge is different from building features from scratch. You need to explore the codebase to understand how it is organized, find the files that need modification, and make changes that fit the existing patterns. Use your browser's developer tools to inspect elements, check the network tab for requests, and review console messages for clues.

Some tasks depend on understanding concepts from previous assignments, such as query parameters, helper functions, and CSS media queries. Review your previous work if you need to refresh your memory on these concepts.

Testing Your Work

As you complete each task from the todo list, test your implementation thoroughly to ensure it works correctly. The emergency handoff scenario page provides specific testing guidance for each task.

General testing strategies include:

The scenario page includes specific URLs and verification steps for each task. Use these to confirm that your implementation meets the requirements before moving to the next task.

Git Workflow Suggestions

While not required, you may find it helpful to use Git branches to organize your work on each task. This mirrors professional development practices where features and fixes are developed in isolation before being merged.

A suggested workflow for this project:

  1. Create an issue or note for each task to track your progress
  2. Create a new branch for each task as you begin working on it
  3. Commit your changes when a task is complete
  4. Merge the branch back to main after testing
  5. Move to the next task and repeat the process

This approach helps you isolate changes, makes it easier to undo mistakes, and provides a clear history of your work. However, the primary focus of this assignment is completing the tasks, not mastering Git workflows.

Submission Requirements

When you have completed all tasks from the todo list:

  1. Record a video demonstration (2-3 minutes preferred, 5 minutes maximum) walking through each completed task. Show how you solved each requirement and demonstrate that your implementation works correctly.
  2. Upload your video to YouTube (as unlisted), OneDrive, Google Drive, or another file sharing service
  3. If you are using a cloud storage solution, ensure the link is set to viewable by anyone with the link. Any submissions requiring permission or access requests will receive a zero.
  4. Push your completed code to your repository on GitHub
  5. Submit both the video link and your GitHub repository URL

Your video should demonstrate each completed task systematically. Explain what you changed and why as you show each feature working correctly. Reference the todo list on the scenario page to ensure you have covered all requirements.

Hints and Tips

The emergency handoff scenario page includes specific hints for each task, but here are some general strategies for working with unfamiliar code:

Understanding the Codebase

Debugging Strategies

Common Pitfalls

Key Concepts Summary

This challenge assignment reinforced critical real-world development skills that go beyond writing new code. You practiced reading and understanding existing code, navigating an unfamiliar codebase, debugging issues in someone else's work, and making targeted improvements without breaking existing functionality.

The tasks covered several technical concepts from previous assignments: accessibility improvements, file organization and architecture, query parameter filtering, helper function creation and usage, data transformation in models, and CSS media queries for print styles. Applying these concepts in a pre-built project demonstrates your ability to transfer knowledge to new contexts.

Taking over someone else's project mid-development is a common scenario in professional software development. Whether a team member leaves, priorities shift, or emergencies occur, developers must frequently work with code they did not write. This experience builds the adaptability and problem-solving skills that separate effective developers from those who can only work on greenfield projects.