0% found this document useful (0 votes)
16 views2 pages

React Intern Assignment Overview

The assignment requires creating a static React prototype that matches a provided Figma design of a spreadsheet view. It emphasizes building a pixel-perfect layout using React 18, TypeScript, and Tailwind CSS, with specific acceptance criteria for functionality and code quality. Optional stretch goals include adding keyboard navigation and column resizing features.

Uploaded by

rojaksh963
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views2 pages

React Intern Assignment Overview

The assignment requires creating a static React prototype that matches a provided Figma design of a spreadsheet view. It emphasizes building a pixel-perfect layout using React 18, TypeScript, and Tailwind CSS, with specific acceptance criteria for functionality and code quality. Optional stretch goals include adding keyboard navigation and column resizing features.

Uploaded by

rojaksh963
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

React Intern Assignment

Join us in building the next generation of AI-powered solutions— designed to scale impact,
spark innovation, and move the world forward.

1. Goal

Create a static, front-end-only React prototype that visually matches the attached screenshot
of the product’s spreadsheet view.

2. Core Criteria (IMPORTANT)

Build a pixel perfect experience as per Figma (including the actual spreadsheet experience) in
React-

Figma URL:
[Link]
2-2535&t=DJGGMt8I4fiZjoIB-1

3. Tech Stack

●​ React 18 (Vite or CRA—your choice)​

●​ TypeScript (strict mode)​

●​ Tailwind CSS for utility styling (already used across Gob)​

●​ react-table (or ⚡your own minimal table component) for the grid​
●​ No state management library needed—local component state is fine.​

5. Acceptance Criteria

1.​ Pixel-close layout to the Figma.​

2.​ Google Sheet/Excel like spread sheet experience​

3.​ All buttons/tabs change state or log to console—no dead UI.​


4.​ Code passes npm run lint (ESLint + Prettier) and npm run type-check.​

5.​ Clean commit history with meaningful messages.​

6. Stretch (optional, only if time permits)

●​ Keyboard navigation within the grid (arrow keys).​

●​ Column resize / hide toggles.​

7. Submission

●​ Live URL to access the built out product


●​ Github
●​ Include a short [Link] explaining setup & any trade-offs.​

Good luck and have fun 🐙

Common questions

Powered by AI

Not including a state management library in the React prototype reflects a strategic decision to simplify the application structure by relying on local component state. This approach benefits the development process by reducing overhead and complexity, enabling quicker iterations and a focus on fundamental functionality without the initial learning curve associated with external libraries. It is suitable for prototypes or smaller projects where state management is minimal. However, as the application scales, this approach could become impractical due to challenges in maintaining code consistency and ensuring state coherence across components. Thus, while omitting a state management library simplifies early development, it may necessitate refactoring as the project's complexity grows, potentially leading to increased technical debt if not addressed timely .

Maintaining a clean commit history with meaningful messages is important in the React Intern Assignment as it facilitates efficient collaboration, code review, and future maintenance of the project. Clear and descriptive commit messages allow team members and reviewers to quickly understand the changes made in each commit, enhancing transparency. This practice supports better version control by providing a chronological and understandable record of the project's development history, making it easier to trace specific changes, debug issues, or revert problematic updates. Moreover, a well-managed commit history is crucial for any professional software development process, reflecting attention to quality and detail .

Tailwind CSS plays a pivotal role in ensuring a pixel-perfect UI experience for the React Intern Assignment by providing a highly flexible and utility-first CSS framework that allows developers to apply styles directly to the HTML elements. This minimizes the need for custom styles and maintains a consistent design by reusing predefined style classes throughout the application. Tailwind CSS's approach to styling ensures that the design adheres closely to the specifications in the Figma mockup, as it simplifies achieving precise layout, spacing, and responsive design. This not only contributes to visual consistency but also accelerates the development process by reducing the need for detailed CSS tweaking .

To successfully complete the React Intern Assignment, it is crucial to adhere to several core criteria that ensure the project aligns with the goal of creating scalable AI-powered solutions. The core criteria include building a pixel-perfect experience as per the Figma design, creating a Google Sheet/Excel-like spreadsheet experience, ensuring that all buttons and tabs provide a responsive UI, and passing code checks using npm's linting and type-checking commands. These criteria guarantee that the prototype is visually accurate, functional, and maintainable, ensuring scalability and adaptability for future enhancements. A pixel-perfect UI provides a professional look and feel that meets user expectations, while the responsive UI and clean codebase facilitate easier integration with larger systems and long-term maintenance .

Creating a 'pixel close' layout in React presents several challenges, such as ensuring cross-browser compatibility, maintaining consistent styling, and achieving precise alignment with the design mockups. Developers may encounter discrepancies in how different browsers render styles, leading to varying visual outputs. Overcoming these challenges requires thorough browser testing and potentially custom CSS solutions to address inconsistencies. Using CSS normalization or reset techniques can help standardize default styling across browsers. Developers can also leverage tools like Tailwind CSS to maintain consistency and accuracy in spacing, typography, and layout. Additionally, investing time in understanding the underlying Flexbox or CSS Grid layouts can ensure a faithful implementation of complex designs .

Passing npm run lint and npm run type-check is crucial for the acceptance of the React prototype as these processes ensure that the code adheres to consistency, readability, and quality standards. Linting, via tools like ESLint, checks for syntax errors, coding style issues, and adherence to best practices, preventing common pitfalls and promoting clean code. Type-checking with tools like TypeScript helps catch type-related errors at compile time, ensuring type safety and reducing runtime errors. These quality checks ensure that the codebase is robust, maintainable, and aligned with modern development standards, making it easier to integrate into larger projects or further develop post-assignment .

Having a live URL and a GitHub repository for the submission of the React prototype is essential for demonstrating both technical proficiency and project transparency. A live URL showcases the working prototype, allowing stakeholders or reviewers to interact with the product, test its features, and evaluate its adherence to the specified criteria in a real-world setting. The GitHub repository provides access to the project's source code, commit history, and development workflow, offering insights into the coding practices, issue tracking, and collaboration efforts. This dual submission format enhances accountability, fosters open collaboration by inviting peer feedback, and establishes a professional record of the work completed .

Implementing keyboard navigation within the grid can significantly enhance user experience by enabling quick and efficient data entry and manipulation, similar to existing spreadsheet applications like Excel or Google Sheets. This feature caters to power users who rely on keyboard shortcuts to maximize productivity. It reduces the need for constant switching between mouse and keyboard, streamlining workflow and making the application more accessible, particularly for users with disabilities who might rely on keyboard navigation rather than a mouse. Enhancing accessibility and efficiency in navigation aligns with modern user experience principles, improving overall user satisfaction and efficiency .

Utilizing TypeScript in strict mode introduces certain trade-offs that developers must consider, including increased development time and complexity, but these are offset by long-term benefits. Strict mode enforces rigorous type checks, which can initially slow down development as developers may need to write more code to satisfy type requirements and handle various edge cases. However, this leads to more robust and error-resistant code, reducing runtime errors and enhancing maintainability. This preventive approach minimizes bugs before they reach production, facilitating future development and refactoring efforts. Although it may lengthen the initial development cycle, strict mode can significantly reduce technical debt, benefiting the project in the long term .

The tech stack chosen for the assignment—React 18, TypeScript in strict mode, Tailwind CSS, and react-table—enhances both development efficiency and the functionality of the React prototype. React 18 provides a robust framework for building user interfaces, with hooks and concurrent rendering to improve performance. TypeScript ensures type safety and reduces runtime errors by catching issues during development. Tailwind CSS offers utility-first styling, enabling rapid and consistent styling across the application. Lastly, using react-table or a custom minimal table component facilitates the creation of the spreadsheet interface, ensuring an efficient and familiar user experience similar to Google Sheets or Excel .

You might also like