0% found this document useful (0 votes)
32 views3 pages

Full-Stack Application Assignment

The assignment requires building a full-stack application using a Figma design, with a React frontend in TypeScript and a Node.js backend using Prisma. Key requirements include proper project structure, type safety, error handling, and the use of specific libraries such as Zod and React Query. Submissions must include a detailed README, a video demonstration of the application, and a public GitHub repository by March 31, 2025.

Uploaded by

sudevaharsha597
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)
32 views3 pages

Full-Stack Application Assignment

The assignment requires building a full-stack application using a Figma design, with a React frontend in TypeScript and a Node.js backend using Prisma. Key requirements include proper project structure, type safety, error handling, and the use of specific libraries such as Zod and React Query. Submissions must include a detailed README, a video demonstration of the application, and a public GitHub repository by March 31, 2025.

Uploaded by

sudevaharsha597
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

Full-Stack Intern Assignment

Objective
Your task is to build a full-stack application using a provided Figma design for the frontend and
specified technologies for both frontend and backend. The application will consist of a React-
based frontend with TypeScript and a [Link] backend with Prisma, adhering to modern
development practices.

Frontend Requirements
• Figma Design Conversion:
o Convert the provided Figma design link into a fully functional React application.
o Use TypeScript for all code to ensure type safety.
• Project Structure:
o Organize the project into three main areas:
§ UI Components: Reusable and modular components reflecting the Figma
design.
§ Business Logic: Separate logic from UI for reusability and maintainability
(e.g., using hooks or utility functions).
§ API Handling: Manage API interactions efficiently.
• Required Libraries:
o Zod: Implement schema validation for data integrity.
o React Hook Form: Use for form management and validation.
o React Query: Handle data fetching, caching, and state management.
• Type Safety:
o Ensure all API responses are typed using TypeScript interfaces or types for full
type safety.
• Error Handling:
o Implement proper error handling in the frontend to manage API errors and display
meaningful messages to the user.

Backend Requirements
• Technology Stack:
o Build a [Link] server using TypeScript.
o Use Prisma for database management (schema definition and querying).
• Prisma Schema:
o Create only a user schema in Prisma with the following fields:
§ email (string, unique)
§ password (string)
o Ensure the schema is properly defined and migrations are handled.
• Project Structure:
o Organize the backend into:
§ Controllers: Contain the business logic for each endpoint.
§ Routes: Define API endpoints (e.g., using [Link] or a similar router).
• Error Handling:
o Implement robust error handling (e.g., custom error classes or middleware) to
manage and respond to errors gracefully.

General Instructions
• README Files:
o Include a detailed README in both the frontend and backend projects.
o The README should cover:
§ Setup instructions (e.g., installing dependencies, configuring environment
variables).
§ How to run the project locally.
§ A brief overview of the tech stack and project structure.
• Video Demonstration:
o Record a video showing the working application (both frontend and backend in
action).
o The video must:
§ Demonstrate the full functionality of the application.
§ Show proper error handling from the frontend (e.g., invalid inputs,
API errors).
§ Confirm that the project is working as expected.
o Share the video via a Google Drive link.
o Ensure the video clearly demonstrates functionality; failure to show a working
project will result in immediate disqualification.
• GitHub Repository:
o Provide a single GitHub repository containing both frontend and backend
projects.
o Use separate folders (e.g., /frontend and /backend) for clarity.
o Ensure the repository is public or accessible to reviewers.
• Deployment:
o Deployment is not required; focus on local functionality.

Evaluation Criteria
Your submission will be assessed based on the following:
• Accurate and complete implementation of the Figma design in the frontend.
• Proper use of TypeScript for type safety across both frontend and backend.
• Effective integration of Zod, React Hook Form, and React Query in the frontend.
• Correct implementation of the user schema in Prisma (with only email and password) and
its integration with the backend.
• Clean, organized, and modular code structure in both projects.
• Robust error handling in both frontend and backend.
• Quality and clarity of the README files and video demonstration.

Additional Notes
• The application must be fully functional with no critical bugs.
• Focus on code quality, readability, and adherence to best practices.
• This is an individual assignment; collaboration is not allowed.

Submission
• Submit the following by: 31, March, 2025
o The GitHub repository link containing both frontend and backend projects.
o The Google Drive link to your video demonstration.
• Ensure both links are accessible to the reviewer.

Common questions

Powered by AI

The integration of Zod, React Hook Form, and React Query is considered effective for the frontend application because it provides a comprehensive solution for data validation, form management, and data synchronization. Zod allows developers to define schemas for validation ensuring that data entering the system conforms to expected formats and rules, which increases the robustness of the application. React Hook Form streamlines the process of form state management and validation, reducing boilerplate code and improving performance by minimizing component re-renders. React Query enhances the data fetching process by providing out-of-the-box caching, background updates, and synchronization capabilities, which are essential for creating responsive and efficient user interfaces. These libraries work together to provide a complete solution for managing complex data flows in a modern web application .

It is important for the GitHub repository to have a separate structure for frontend and backend projects to clearly delineate the different components of the application. This separation aids in organizing code, making it easier for developers to navigate, and manage the codebases for each part of the application. It simplifies the process of deploying and testing each part independently and helps in avoiding conflicts during development processes. By organizing the repository with distinct frontend and backend directories, it reinforces a clean separation of concerns, ensuring that each part of the application can be developed, reviewed, and maintained without unnecessary overlaps or confusion .

The key components of a well-structured README file for both frontend and backend projects as outlined in this assignment include setup instructions, which should detail how to install dependencies and configure environment variables; instructions on how to run the project locally, which help users quickly get the application up and running; and a brief overview of the tech stack and project structure, providing insights into the underlying technologies used and how the project is organized. These elements are crucial for aiding other developers or reviewers in understanding and using the software effectively .

For the video demonstration of the application to be considered sufficient, it must demonstrate the full functionality of the application, clearly showing both the frontend and backend in action. The video should highlight proper error handling, such as handling invalid inputs and demonstrating API error responses. Additionally, it must confirm that the project is working as expected and provide a coherent walkthrough of the application without lapses in operation or understanding. It should be shared via a Google Drive link, ensuring it is accessible to reviewers .

Error handling and response on the backend should be designed by implementing robust error handling strategies, such as using custom error classes and middleware. The backend should gracefully handle errors and return meaningful HTTP status codes along with error messages to the frontend. This involves catching errors at the point of occurrence, logging them for debugging and audit purposes, and transforming them into user-friendly messages that avoid exposing internal error details. Middleware can centralize error handling, ensuring consistent behavior across the entire application for different error scenarios .

TypeScript ensures type safety across both frontend and backend projects by providing static typing, which helps catch errors at compile time rather than runtime. In the frontend, TypeScript aids in defining clear interfaces and types, which enhances code readability and maintainability. For the backend, TypeScript's type definitions across controllers and services increase reliability and reduce potential runtime errors. Type safety also ensures that API responses and requests are adequately typed, thus reducing bugs related to data mismatches and improving the ease of integration between client and server .

The implementation of a user schema with email and password fields in Prisma contributes significantly to the backend structure by establishing a clear and concise schema for user data management. The email field is required to be unique, ensuring that each user can register only once with a particular email, which is a common practice for applications requiring authentication. The separation of the user schema facilitates straightforward querying and manipulation of user data through Prisma's API, aiding in clean data management and contributing to the database's structural integrity by using migrations to handle schema changes predictably. It also helps in maintaining a clear boundary between the application logic and the underlying database .

Error handling in the frontend is implemented by managing API errors and displaying meaningful messages to the users. This involves using proper error handling mechanisms such as try-catch blocks or error boundaries in React to catch potential errors during operations such as data fetching. Additionally, libraries like React Hook Form allow for easy validation and error message display for form inputs, thus improving user feedback and experience when invalid data is entered. Meaningful error messages inform the user of what went wrong and how to resolve it, paying particular attention to frontend UI feedback loops .

Separating the project into UI Components, Business Logic, and API Handling significantly impacts the frontend's reusability and maintainability by enforcing a modular architecture. UI Components are reusable across different parts of the application, which reduces duplication and enhances consistency. Business Logic separation allows the core processing and data manipulation to be maintained independently of the UI, promoting the single responsibility principle and making it easier to test and refactor. API Handling separation further organizes the codebase by decoupling data fetching and state management from the UI and logic, allowing for better handling of API changes and simplified debugging and maintenance. This architecture encourages cleaner code, reduced coupling, and increased flexibility, which are core to sustainable frontend development .

The key technologies required for developing the frontend in the assignment include React with TypeScript, Zod for schema validation, React Hook Form for form management and validation, and React Query for data fetching, caching, and state management. React allows for building reusable UI components, and when coupled with TypeScript, it ensures type safety. Zod is used for validating the data integrity of incoming data, which is crucial for maintaining consistent data flow. React Hook Form efficiently handles form validations and submissions, reducing the boilerplate code significantly. React Query simplifies data fetching processes by automatically caching and updating UI data. Together, these technologies promote modular, maintainable, and scalable codebases adhering to modern development standards .

You might also like